Movatterモバイル変換


[0]ホーム

URL:


Skip toContent

Java Cryptography Architecture Oracle Providers Documentation for Java Platform Standard Edition 7

The following topics are covered:

Note: TheStandard NamesDocumentation contains more information about the standardnames used in this document.

Introduction

The Java platform defines a set of APIs spanning major securityareas, including cryptography, public key infrastructure,authentication, secure communication, and access control. TheseAPIs allow developers to easily integrate security mechanisms intotheir application code. TheJavaCryptography Architecture (JCA) and itsProvider Architecture isa core concept of the Java Development Kit (JDK). It is assumedreaders have a solid understanding of this architecture.

This document describes the technical details of the providersshipped as part of Oracle's Java Environment.

Reminder: Cryptographic implementations in the JDK aredistributed through several different providers ("Sun", "SunJSSE","SunJCE", "SunRsaSign") for both historical reasons and by thetypes of services provided. General purpose applicationsSHOULDNOT request cryptographic services from specific providers.That is:

getInstance("...","SunJCE");  // not recommended// ... versus ...getInstance("...");            // recommended

Otherwise, applications are tied to specific providers that may notbe available on other Java implementations. They also might not beable to take advantage of available optimized providers (forexample, hardware accelerators via PKCS11 or native OSimplementations such as Microsoft's MSCAPI) that have a higherpreference order than the specific requested provider.

Import Limits on Cryptographic Algorithms

By default, an application can use cryptographic algorithms of any strength.However, due to import regulations in some locations, you may have to limit thestrength of those algorithms. The JDK provides two different sets of jurisdictionpolicy files, "limited" and "unlimited", in the directory<java-home>/jre/lib/security/policythat determine the strength of cryptographic algorithms. Information aboutjurisdiction policy files and how to activate them is available inAppendix C: Cryptographic Strength Configuration.

Consult your export/import control counsel or attorney to determine the exactrequirements for your location.

For the "limited" configuration, the following table lists the maximum key sizesallowed by the "limited" set of jurisdiction policy files:

AlgorithmMaximum Keysize
DES64
DESede*
RC2128
RC4128
RC5128
RSA*
all others128

Cipher Transformations

Thejavax.crypto.Cipher.getInstance(String transformation) factory method generatesCiphers using transformations of the formalgorithm/mode/padding. If the mode/padding are omitted, the SunJCE and SunPKCS11 providers use ECB as the default mode and PKCS5Padding as the default padding for many symmetric ciphers.

It is recommended to use transformations that fully specify the algorithm, mode, and padding instead of relying on the defaults.


Note: ECB works well for single blocks of data and can beparallelized, but absolutely should not be used for multiple blocks of data.


TheSunPKCS11 Provider

The Cryptographic Token Interface Standard (PKCS#11) providesnative programming interfaces to cryptographic mechanisms, such ashardware cryptographic accelerators and Smart Cards. When properlyconfigured, theSunPKCS11 provider enablesapplications to use the standard JCA/JCE APIs to access nativePKCS#11 libraries.TheSunPKCS11 provider itselfdoes not contain cryptographic functionality, it is simply aconduit between the Java environment and the native PKCS11providers. TheJava PKCS#11 ReferenceGuide has a much more detailed treatment of this provider.

TheSUN Provider

JDK 1.1 introduced theProvider architecture. Thefirst JDK provider was namedSUN, and contained twotypes of cryptographic services (MessageDigests andSignatures). In later releases, other mechanisms wereadded (SecureRandom number generators,KeyPairGenerators,KeyFactorys, and soon.).

United States export regulations in effect at the time placedsignificant restrictions on the type of cryptographic functionalitythat could be made available internationally in the JDK. For thisreason, theSUN provider has historically containedcryptographic engines that did not directly encrypt or decryptdata.

The following algorithms are available in theSUNprovider:

EngineAlgorithm Names
AlgorithmParameterGeneratorDSA
AlgorithmParametersDSA
CertificateFactoryX.509
CertPathBuilderPKIX
CertPathValidatorPKIX
CertStoreCollection
LDAP
ConfigurationJavaLoginConfig
KeyFactoryDSA
KeyPairGeneratorDSA
KeyStoreJKS
MessageDigestMD2
MD5
SHA-1
SHA-256
SHA-384
SHA-512
PolicyJavaPolicy
SecureRandomSHA1PRNG
SignatureNONEwithDSA
SHA1withDSA

Keysize Restrictions

TheSUN provider uses the following defaultkeysizes (in bits) and enforces the following restrictions:

KeyPairGenerator

Alg. NameDefault KeysizeRestrictions/Comments
DSA1024Keysize must be a multiple of 64, ranging from 512 to 1024(inclusive).

AlgorithmParameterGenerator

Alg. NameDefault KeysizeRestrictions/Comments
DSA1024Keysize must be a multiple of 64, ranging from 512 to 1024(inclusive).

CertificateFactory/CertPathBuilder/CertPathValidator/CertStoreImplementations

Additional details on theSUN providerimplementations forCertificateFactory,CertPathBuilder,CertPathValidator andCertStore are documented inAppendix B of the PKIProgrammer's Guide.

TheSunRsaSign Provider

TheSunRsaSign provider was introduced in JDK 1.3as an enhanced replacement for the RSA signatures in theSunJSSE provider.

The following algorithms are available in theSunRsaSign provider:

EngineAlgorithm Names
KeyFactoryRSA
KeyPairGeneratorRSA
SignatureMD2withRSA
MD5withRSA
SHA1withRSA
SHA256withRSA
SHA384withRSA
SHA512withRSA

Keysize Restrictions

TheSunRsaSign provider uses the following defaultkeysize (in bits) and enforces the following restriction:

KeyPairGenerator

Alg. NameDefault KeysizeRestrictions/Comments
RSA1024Keysize must range between 512 and 65536 bits, the latter ofwhich is unnecessarily large.

TheSunJSSE Provider

The Java Secure Socket Extension (JSSE) was originally releasedas a separate "Optional Package" (also briefly known as a "StandardExtension"), and was available for JDK 1.2.n and1.3.n. TheSunJSSE provider was introduced aspart of this release.

In earlier JDK releases, there were no RSA signature providersavailable in the JDK, thereforeSunJSSE had to provideits own RSA implementation in order to use commonly availableRSA-based certificates. JDK 5 introduced theSunRsaSign provider, which provides all thefunctionality (and more) of theSunJSSE provider.Applications targeted at JDK 5.0 and later should request instancesof theSunRsaSign provider instead. For backwardcompatibility, the RSA algorithms are still available through thisprovider, but are actually implemented in theSunRsaSign provider.

Algorithms

The following algorithms are available in theSunJSSE provider:

EngineAlgorithm Name(s)
KeyFactory
RSA
KeyManagerFactory
SunX509: A factory forX509ExtendedKeyManagerinstances that manage X.509 certificate-based key pairs for localside authentication according to the rules defined by the IETF PKIXworking group inRFC3280 or its successor. ThisKeyManagerFactorysupports initialization using aKeystore object, butdoes not currently support initialization using the classjavax.net.ssl.ManagerFactoryParameters.

PKIX: A factory forX509ExtendedKeyManagerinstances that manage X.509 certificate-based key pairs for localside authentication according to the rules defined by the IETF PKIXworking group inRFC3280 or its successor. ThisKeyManagerFactorycurrently supports initialization using aKeyStoreobject orjavax.net.ssl.KeyStoreBuilderParameters.
KeyPairGenerator
RSA
KeyStore
PKCS12Footnote 1
Signature
MD2withRSA
MD5withRSA
SHA1withRSA
SSLContext
SSLv3
TLSv1
TLSv1.1
TLSv1.2
TrustManagerFactory
SunX509: A factory forX509ExtendedTrustManagerinstances that validate certificate chains according to the rulesdefined by the IETF PKIX working group inRFC 3280 or itssuccessor. ThisTrustManagerFactory supportsinitialization using aKeystore object, but does notcurrently support initialization using the classjavax.net.ssl.ManagerFactoryParameters.

PKIX: A factory forX509ExtendedTrustManagerinstances that validate certificate chains according to the rulesdefined by the IETF PKIX working group inRFC 3280 or itssuccessor. ThisTrustManagerFactory currently supportsinitialization using aKeyStore object orjavax.net.ssl.CertPathTrustManagerParameters.

Footnote 1 The PKCS12KeyStore implementation does not support theKeyBag type.

Protocols

TheSunJSSE supports the followingprotocol parameters:

ProtocolEnabled by Default for ClientEnabled by Default for Server
SSLv3Footnote 1NoNo
TLSv1YesYes
TLSv1.1Footnote 2NoYes
TLSv1.2Footnote 2NoYes
SSLv2HelloFootnote 3NoYes

Footnote 1SSLv3 was disabled by default since Java SE 7u75.

Footnote 2AlthoughSunJSSE in the Java SE 7release supports TLS 1.1 and TLS 1.2, neither version is enabled bydefault for client connections. Some servers do not implementforward compatibility correctly and refuse to talk to TLS 1.1 orTLS 1.2 clients. For interoperability,SunJSSE doesnot enable TLS 1.1 or TLS 1.2 by default for clientconnections.

Server connections have no such interoperability problem. TLS1.1 and TLS 1.2 are enabled by default for server connections.

Footnote 3The SSLv3, TLSv1, and TLSv1.1 protocols allowyou to send SSLv3, TLSv1, and TLSv1.1 hellos encapsulated in anSSLv2 format hello.

Cipher Suites

SunJSSE supports a large number of cipher suites.The two tables that follow show the cipher suites supported bySunJSSE in preference order and the release in which they wereintroduced.

The first table lists the cipher suites that are enable bydefault. The second table shows cipher suites that are supported bySunJSSE but disabled by default.

Default Enabled Cipher Suites
Cipher SuiteJ2SE v1.4J2SE v1.4.1, v1.4.2J2SE 5.0Java SE 6Java SE 7
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384    XFootnote 1
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384    XFootnote 1
TLS_RSA_WITH_AES_256_CBC_SHA256    XFootnote 1
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384    XFootnote 1
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384    XFootnote 1
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256    XFootnote 1
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256    XFootnote 1
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA   XX
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA   XX
TLS_RSA_WITH_AES_256_CBC_SHA XXXX
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA   XX
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA   XX
TLS_DHE_RSA_WITH_AES_256_CBC_SHA XXXX
TLS_DHE_DSS_WITH_AES_256_CBC_SHA XXXX
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256    XFootnote 1
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256    XFootnote 1
TLS_RSA_WITH_AES_128_CBC_SHA256    XFootnote 1
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256    XFootnote 1
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256    XFootnote 1
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256    XFootnote 1
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256    XFootnote 1
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA   XX
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA   XX
TLS_RSA_WITH_AES_128_CBC_SHA XXXX
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA   XX
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA   XX
TLS_DHE_RSA_WITH_AES_128_CBC_SHA XXXX
TLS_DHE_DSS_WITH_AES_128_CBC_SHA XXXX
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA   XX
TLS_ECDHE_RSA_WITH_RC4_128_SHA   XX
SSL_RSA_WITH_RC4_128_SHAXXXXX
TLS_ECDH_ECDSA_WITH_RC4_128_SHA   XX
TLS_ECDH_RSA_WITH_RC4_128_SHA   XX
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA   XX
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA   XX
SSL_RSA_WITH_3DES_EDE_CBC_SHAXXXXX
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA   XX
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA   XX
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA XXXX
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHAXXXXX
SSL_RSA_WITH_RC4_128_MD5XXXXX
TLS_EMPTY_RENEGOTIATION_INFO_SCSV2 1.4.2u28+u26+u22+X

Footnote 1Cipher suites with SHA384 and SHA256 are available only for TLS 1.2or later.

Footnote 2TLS_EMPTY_RENEGOTIATION_INFO_SCSV is a newpseudo-cipher suite to support RFC 5746. See theTransportLayer Security (TLS) Renegotiation Issue section of the JSEEReference Guide for more information.

Default Disabled Cipher Suites
Cipher SuiteJ2SE v1.4J2SE v1.4.1, v1.4.2J2SE 5.0Java SE 6Java SE 7
TLS_DH_anon_WITH_AES_256_CBC_SHA256    X
TLS_ECDH_anon_WITH_AES_256_CBC_SHA   XX
TLS_DH_anon_WITH_AES_256_CBC_SHA XXXX
TLS_DH_anon_WITH_AES_128_CBC_SHA256    X
TLS_ECDH_anon_WITH_AES_128_CBC_SHA   XX
TLS_DH_anon_WITH_AES_128_CBC_SHA XXXX
TLS_ECDH_anon_WITH_RC4_128_SHA   XX
SSL_DH_anon_WITH_RC4_128_MD5XXXXX
TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA   XX
SSL_DH_anon_WITH_3DES_EDE_CBC_SHAXXXXX
TLS_RSA_WITH_NULL_SHA256    X
TLS_ECDHE_ECDSA_WITH_NULL_SHA   XX
TLS_ECDHE_RSA_WITH_NULL_SHA   XX
SSL_RSA_WITH_NULL_SHAXXXXX
TLS_ECDH_ECDSA_WITH_NULL_SHA   XX
TLS_ECDH_RSA_WITH_NULL_SHA   XX
TLS_ECDH_anon_WITH_NULL_SHA   XX
SSL_RSA_WITH_NULL_MD5XXXXX
SSL_RSA_WITH_DES_CBC_SHAXXXXXFootnote 1
SSL_DHE_RSA_WITH_DES_CBC_SHA XXXXFootnote 1
SSL_DHE_DSS_WITH_DES_CBC_SHAXXXXXFootnote 1
SSL_DH_anon_WITH_DES_CBC_SHAXXXXXFootnote 1
SSL_RSA_EXPORT_WITH_RC4_40_MD5XXXXXFootnote 2
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5XXXXXFootnote 2
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA XXXXFootnote 2
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA XXXXFootnote 2
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHAXXXXXFootnote 2
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHAXXXXXFootnote 2
TLS_KRB5_WITH_RC4_128_SHA  XXX
TLS_KRB5_WITH_RC4_128_MD5  XXX
TLS_KRB5_WITH_3DES_EDE_CBC_SHA  XXX
TLS_KRB5_WITH_3DES_EDE_CBC_MD5  XXX
TLS_KRB5_WITH_DES_CBC_SHA  XXXFootnote 1
TLS_KRB5_WITH_DES_CBC_MD5  XXXFootnote 1
TLS_KRB5_EXPORT_WITH_RC4_40_SHA  XXXFootnote 2
TLS_KRB5_EXPORT_WITH_RC4_40_MD5  XXXFootnote 2
TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA  XXXFootnote 2
TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5  XXXFootnote 2

Footnote 1RFC 5246 TLS 1.2forbids the use of these suites. These can be used in theSSLv3/TLS1.0/TLS1.1 protocols, but cannot be used in TLS 1.2 andlater.

Footnote 2RFC 4346 TLS 1.1forbids the use of these suites. These can be used in theSSLv3/TLS1.0 protocols, but cannot be used in TLS 1.1 andlater.

Cipher suites that use AES_256 require installation of the JCEUnlimited Strength Jurisdiction Policy Files. SeeImport Limits on Cryptographic Algorithms.

Cipher suites that use Elliptic Curve Cryptography (ECDSA, ECDH,ECDHE, ECDH_anon) require a JCE cryptographic provider that meetsthe following requirements:

If these requirements are not met, EC cipher suites may not benegotiated correctly.

Tighter Checking of EncryptedPreMasterSecret Version Numbers

Prior to the Java SE 7 release, the SSL/TLS implementation didnot check the version number in PreMasterSecret, and the SSL/TLSclient did not send the correct version number by default. Unlessthe system propertycom.sun.net.ssl.rsaPreMasterSecretFix is set totrue, the TLS client sends the active negotiatedversion, but not the expected maximum version supported by theclient.

For compatibility, this behavior is preserved for SSL version3.0 and TLS version 1.0. However, for TLS version 1.1 or later, theimplementation tightens checking the PreMasterSecret versionnumbers as required byRFC 5246. Clients alwayssend the correct version number, and servers check the versionnumber strictly. The system property,com.sun.net.ssl.rsaPreMasterSecretFix, is not used inTLS 1.1 or later.

TheSunJCE Provider

As described briefly inTheSUN Provider, US export regulations at the timerestricted the type of cryptographic functionality that could bemade available in the JDK. A separate API and referenceimplementation was developed that allowed applications toencrypt/decrypt data. The Java Cryptographic Extension (JCE) wasreleased as a separate "Optional Package" (also briefly known as a"Standard Extension"), and was available for JDK 1.2.x and 1.3.x.During the development of JDK 1.4, regulations were relaxed enoughthat JCE (and SunJSSE) could be bundled as part of the JDK.

The following algorithms are available in the SunJCEprovider:

EngineAlgorithm Names
AlgorithmParameterGeneratorDiffieHellman
AlgorithmParametersAES
Blowfish
DES
DESede
DiffieHellman
OAEP
PBEWithMD5AndDES
PBEWithMD5AndTripleDES
PBEWithSHA1AndDESede
PBEWithSHA1AndRC2_40
RC2
CipherSee theCipher table.
KeyAgreementDiffieHellman
KeyFactoryDiffieHellman
KeyGeneratorAES
ARCFOUR
Blowfish
DES
DESede
HmacMD5
HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512
RC2
KeyPairGeneratorDiffieHellman
KeyStoreJCEKS
MacHmacMD5
HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512
SecretKeyFactoryDES
DESede
PBEWithMD5AndDES
PBEWithMD5AndTripleDES
PBEWithSHA1AndDESede
PBEWithSHA1AndRC2_40
PBKDF2WithHmacSHA1

The following table listscipher algorithms available in the SunJCE provider.

Algorithm NameModesPaddings
AESECB, CBC, PCBC, CTR, CTS, CFB, CFB8..CFB128, OFB,OFB8..OFB128NOPADDING, PKCS5PADDING, ISO10126PADDING
AESWrapECBNOPADDING
ARCFOURECBNOPADDING
Blowfish, DES, DESede, RC2ECB, CBC, PCBC, CTR, CTS, CFB, CFB8..CFB64, OFB,OFB8..OFB64NOPADDING, PKCS5PADDING, ISO10126PADDING
DESedeWrapCBCNOPADDING
PBEWithMD5AndDES, PBEWithMD5AndTripleDES1PBEWithSHA1AndDESede, PBEWithSHA1AndRC2_40CBCPKCS5Padding
RSAECBNOPADDING, PKCS1PADDING, OAEPWITHMD5ANDMGF1PADDING,OAEPWITHSHA1ANDMGF1PADDING, OAEPWITHSHA-1ANDMGF1PADDING,OAEPWITHSHA-256ANDMGF1PADDING, OAEPWITHSHA-384ANDMGF1PADDING,OAEPWITHSHA-512ANDMGF1PADDING

1 PBEWithMD5AndTripleDES is a proprietaryalgorithm that has not been standardized.

Keysize Restrictions

The SunJCE provider uses the following default keysizes (inbits) and enforces the following restrictions:

KeyGenerator

Algorithm NameDefault KeysizeRestrictions/Comments
AES128Keysize must be equal to 128, 192, or 256.
ARCFOUR (RC4)128Keysize must range between 40 and 1024 (inclusive).
Blowfish128Keysize must be a multiple of 8, ranging from 32 to 448(inclusive).
DES56Keysize must be equal to 56.
DESede (Triple DES)168Keysize must be equal to 112 or 168.

A keysize of 112 will generate a Triple DES key with 2intermediate keys, and a keysize of 168 will generate a Triple DESkey with 3 intermediate keys.

Due to the "Meet-In-The-Middle" problem, even though 112 or 168bits of key material are used, theeffective keysize is 80or 112 bits respectively.

HmacMD5512No keysize restriction.
HmacSHA1512No keysize restriction.
HmacSHA256256No keysize restriction.
HmacSHA384384No keysize restriction.
HmacSHA512512No keysize restriction.
RC2128Keysize must range between 40 and 1024 (inclusive).

NOTE: The various Password-Based Encryption (PBE)algorithms use various algorithms to generate key data, andultimately depends on the targeted Cipher algorithm. For example,"PBEWithMD5AndDES" will always generate 56-bit keys.

KeyPairGenerator

Algorithm NameDefault KeysizeRestrictions/Comments
Diffie-Hellman (DH)2048Footnote 1Keysize must either be a multiple of 64, ranging from 512 to 1024 (inclusively), or 2048.Footnote 1

AlgorithmParameterGenerator

Alg. NameDefault KeysizeRestrictions/Comments
Diffie-Hellman (DH)2048Footnote 1Keysize must either be a multiple of 64, ranging from 512 to 1024 (inclusively), or 2048.Footnote 1
DSA1024Keysize must be a multiple of 64, ranging from 512 to 1024(inclusively).

Footnote 1Diffie-Hellman key pair generation supports key sizes up to 2048 bits since Java SE 7u91. Prior to Java SE 7u91, the default key size was 1024.

TheSunJGSS Provider

The following algorithms are available in theSunJGSS provider:

OIDName
1.2.840.113554.1.2.2Kerberos v5
1.3.6.1.5.5.2SPNEGO

TheSunSASL Provider

The following algorithms are available in theSunSASL provider:

EngineAlgorithm Names
SaslClientCRAM-MD5
DIGEST-MD5
EXTERNAL
GSSAPI
PLAIN
SaslServerCRAM-MD5
DIGEST-MD5
GSSAPI

TheXMLDSig Provider

The following algorithms are available in theXMLDSig provider:

EngineAlgorithm Names
KeyInfoFactoryDOM
TransformServicehttp://www.w3.org/TR/2001/REC-xml-c14n-20010315 -(CanonicalizationMethod.INCLUSIVE)
http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments -(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS)
http://www.w3.org/2001/10/xml-exc-c14n# -(CanonicalizationMethod.EXCLUSIVE)
http://www.w3.org/2001/10/xml-exc-c14n#WithComments -(CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS)
http://www.w3.org/2000/09/xmldsig#base64 -(Transform.BASE64)
http://www.w3.org/2000/09/xmldsig#enveloped-signature -(Transform.ENVELOPED)
http://www.w3.org/TR/1999/REC-xpath-19991116 -(Transform.XPATH)
http://www.w3.org/2002/06/xmldsig-filter2 -(Transform.XPATH2)
http://www.w3.org/TR/1999/REC-xslt-19991116 -(Transform.XSLT)
XMLSignatureFactoryDOM

TheSunPCSC Provider

The SunPCSC provider enables applications to use theJava Smart Card I/OAPI to interact with the PC/SC Smart Card stack of theunderlying operating system. On some operating systems, it may benecessary to enable and configure the PC/SC stack before it isusable. Consult your operating system documentation fordetails.

On Solaris and Linux platforms, SunPCSC accesses the PC/SC stackvia thelibpcsclite.so library. It looks for thislibrary in the directories/usr/$LIBISA and/usr/local/$LIBISA, where$LIBISA isexpanded tolib on 32-bit platforms,lib/64 on 64-bit Solaris platforms, andlib64 on 64-bit Linux platforms. The system propertysun.security.smartcardio.library may also be set tothe full filename of an alternatelibpcsclite.soimplementation. On Windows platforms, SunPCSC always calls intowinscard.dll and no Java-level configuration isnecessary or possible.

If PC/SC is available on the host platform, the SunPCSCimplementation can be obtained viaTerminalFactory.getDefault() andTerminalFactory.getInstance("PC/SC"). If PC/SC is notavailable or not correctly configured, agetInstance()call will fail with aNoSuchAlgorithmException andgetDefault() will return a JRE built-in implementationthat does not support any terminals.

The following algorithms are available in theSunPCSC provider:

EngineAlgorithm Names
TerminalFactoryPC/SC

TheSunMSCAPI Provider

The SunMSCAPI provider enables applications to use the standardJCA/JCE APIs to access the native cryptographic libraries,certificates stores and key containers on the Microsoft Windowsplatform. The SunMSCAPI provider itself does not containcryptographic functionality, it is simply a conduit between theJava environment and the native cryptographic services onWindows.

The following algorithms are available in theSunMSCAPI provider:

EngineAlgorithm Names
CipherRSARSA/ECB/PKCS1Padding only
KeyPairGeneratorRSA
KeyStoreWindows-MY

The keystore type that identifies the native Microsoft WindowsMY keystore. It contains the user's personal certificates andassociated private keys.

Windows-ROOT

The keystore type that identifies the native Microsoft WindowsROOT keystore. It contains the certificates of Root certificateauthorities and other self-signed trusted certificates.

SecureRandomWindows-PRNG

The name of the native pseudo-random number generation (PRNG)algorithm.

SignatureMD5withRSA
MD2withRSA
NONEwithRSA
SHA1withRSA
SHA256withRSA
SHA384withRSA
SHA512withRSA

Keysize Restrictions

The SunMSCAPI provider uses the following default keysizes (inbits) and enforce the following restrictions:

KeyGenerator

Alg. NameDefault KeysizeRestrictions/Comments
RSA1024Keysize ranges from 512 bits to 16,384 bits (depending on theunderlying Microsoft Windows cryptographic service provider).

TheSunEC Provider

The SunEC provider implements Elliptical Curve Cryptography(ECC). ECC is emerging as an attractive public-key cryptosystem formobile/wireless and other environments. Compared to traditionalcryptosystems like RSA, ECC offers equivalent security with smallerkey sizes, which results in faster computations, lower powerconsumption, as well as memory and bandwidth savings.

Applications can now use the standard JCA/JCE APIs to access ECCfunctionality without the dependency on external ECC libraries(viaSunPKCS11), as was the case in the JDK 6 release.

The following algorithms are available in theSunECprovider:

EngineAlgorithm Name(s)
AlgorithmParametersEC
KeyAgreementECDH
KeyFactoryEC
KeyPairGeneratorEC
SignatureNONEwithECDSA
SHA1withECDSA
SHA256withECDSA
SHA384withECDSA
SHA512withECDSA

Keysize Restrictions

The SunEC provider uses the following default keysizes (in bits)and enforces the following restrictions:

KeyPairGenerator

Alg. NameDefault KeysizeRestrictions/Comments
EC256Keysize must range from 112 to 571 (inclusive).

TheOracleUcrypto Provider

The Solaris-only security providerOracleUcrypto (introduced in JDK 7u4) leverages the Solaris Ucrypto library to offload and delegate cryptographic operations supported by the Oracle SPARC T4 basedon-core cryptographic instructions. TheOracleUcryptoprovider itself does not contain cryptographic functionality; it issimply a conduit between the Java environment and the SolarisUcrypto library.

If the underlying Solaris Ucrypto library does not support aparticular algorithm, then the OracleUcrypto provider will notsupport it either. Consequently, at runtime, the supportedalgorithms consists of the intersection of those that the SolarisUcrypto library supports and those that theOracleUcrypto provider recognizes.

Note that theOracleUcrypto provider is includedonly in Oracle's JDK. It is not part of OpenJDK.

The following algorithms are available in theOracleUcrypto provider:

EngineAlgorithm Name(s)
CipherAES
RSA
AES/ECB/NoPadding
AES/ECB/PKCS5Padding
AES/CBC/NoPadding
AES/CBC/PKCS5Padding
AES/CTR/NoPadding
AES/GCM/NoPadding
AES/CFB128/NoPadding
AES/CFB128/PKCS5Padding
RSA/ECB/PKCS1Padding
RSA/ECB/NoPadding
SignatureMD5withRSA
SHA1withRSA
SHA256withRSA
SHA384withRSA
SHA512withRSA
MessageDigestMD5
SHA
SHA-256
SHA-384
SHA-512

Keysize Restrictions

TheOracleUcrypto provider does not specify anydefault keysizes or keysize restrictions; these are specified bythe underlying Solaris Ucrypto library.

OracleUcrypto Provider Configuration File

TheOracleUcrypto provider has a configuration filenameducrypto-solaris.cfg that resides in the$JAVA_HOME/lib/security directory. Modify thisconfiguration file to specify which algorithms to disable bydefault. For example, the following configuration file disables AESwith CFB128 mode by default:

## Configuration file for the OracleUcrypto provider#disabledServices = {  Cipher.AES/CFB128/PKCS5Padding  Cipher.AES/CFB128/NoPadding}

The Apple Provider

TheApple provider implements ajava.security.KeyStore that provides access to the Mac OS X Keychain.

The following algorithms are available in theApple provider:

EngineAlgorithm Name(s)
KeyStoreKeychainStore

Copyright © 1993, 2020, Oracleand/or its affiliates. All rights reserved.
Contact Us

[8]ページ先頭

©2009-2025 Movatter.jp