IBM 32-bit SDK for AIX platforms, Java Standard Edition, Version 5.0

Security User Guide



Copyright International Business Machines Corporation 2003, 2007. All rights reserved.
US Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

Contents

Preface
General information about IBM security providers
Hardware Crypto support
IBM PCI Cryptographic Coprocessor
Installing the adapter hardware
Installing the coprocessor's AIX device driver
Installing the coprocessor's PKCS #11 Support Program
Loading PKCS #11 microcode onto the adapter
Installing and configuring AIX PKCS #11 Subsystem
IBM e-business Cryptographic Accelerator
Installing the adapter hardware
Installing the Cryptographic Accelerator's AIX device driver
Installing and configuring AIX PKCS #11 Subsystem
iKeyman tool
What's new?
Documentation
Java Authentication and Authorization Service (JAAS) V2.0
Differences between IBM and Sun versions of JAAS
What's new?
Documentation
Java Certification Path (CertPath)
Differences between IBM and Sun versions of CertPath
What's new?
Documentation
Java Cryptography Extension (JCE)
Differences between IBM and Sun versions of JCE
What's new?
Documentation
Java Generic Security Service (JGSS)
Installing Kerberos
Differences between IBM and Sun versions of JGSS
What's new?
Documentation
IBMJSSE2 Provider
Differences between the IBMJSSE Provider and the IBMJSSE2 Provider
Differences between the IBMJSSE2 Provider and Sun's version of JSSE
What's new?
Documentation
Java Certificate Management Protocol (CMP)
Differences between IBM and Sun versions of CMP
What's new?
Documentation
IBMPKCS11Impl Provider
Differences between IBM and Sun versions of IBMPKCS11Impl
What's new?
Documentation
IBMJCEFIPS Provider
Differences between IBM and Sun versions of IBMJCEFIPS
What's new?
Documentation
IBM SASL Provider
Differences between Sun and IBM SASL Provider
What's new
Documentation
Key Certificate Management utilities
What's new
Documentation
Notices
Trademarks

Preface

The security components described in this User Guide are shipped with the SDK and are not extensions. They provide a wide range of security services through standard Java(TM) APIs (except iKeyman). The security components contain the IBM(R) implementation of various security algorithms and mechanisms. IBM does not provide support for any of the IBM Java security components when used with a non-IBM JVM or with non-IBM security providers when used with the IBM JVM.

The IBM SDK also provides a FIPS 140-2 certified cryptographic module, IBMJCEFIPS, implemented as a JCE provider. Applications can comply with the FIPS 140-2 requirements by using the IBMJCEFIPS module.

The CertPath component provides PKIX-compliant certification path building and validation.

The JGSS component provides a generic API that can be plugged in by different security mechanisms. IBM JGSS uses Kerberos V5 as the default mechanism for authentication and secure communication.

The JAAS component provides a means for principal-based authentication and authorization.

The JCE framework has two providers: IBMJCE is the pre-registered default provider; IBMJCEFIPS is optional.

JSSE is the Java implementation of the SSL and TLS protocols. The JSSE pre-registered default provider is IBMJSSE2.

IBM Java Simple Authentication and Security Layer, or SASL, is an Internet standard (RFC 2222) that specifies a protocol for authentication and optional establishment of a security layer between client and server applications.

The Java security configuration file does not refer to the Sun provider. The IBM JCE provider has replaced the Sun provider. The JCE supplies all the signature handling message digest algorithms that were previously supplied by the Sun provider. It also supplies the IBM secure random number generator, IBMSecureRandom, which is a real Random Number Generator. SHA1PRNG is a Pseudo Random Number Generator and is supplied for code compatibility. SHA1PRNG is not guaranteed to produce the same output as the SUN SHA1PRNG.

In the IBM SDK v1.4.1, the following options were added to the java.security.debug property to help you debug Java Cryptography Architecture (JCA)-related problems:

provider
Displays each provider request and load, provider add and provider remove. It also displays the related exception when a provider load fails.
algorithm
Displays each algorithm request, which provider has supplied the algorithm and the implementing class name.
:stack
You can append this option to either of algorithm - or provider. When you request an algorithm, a stack trace is displayed. Use this stack trace to determine the code that has requested the algorithm. This option also prints the stack trace for exceptions that are swallowed or converted.
:thread
Adds the thread id to all debug message lines. You can use this option together with all the other debug options.

An example of a valid option string is "provider, algorithm:stack".

In this guide, you will see a 'What's new' section for each component. This information is provided to help you with migration.

General information about IBM security providers

Overview of the security providers tested with the IBM SDK.

The IBM SDK V5.0 has been tested with the following default security providers:

You can add other IBM security providers either statically or from within your Java application's code. To add a new provider statically, edit a Java security properties file (for example, java.security). To add a new provider from your application's code, use the methods of the java.security.Security class (for example, java.security.Security.addProvider()).

You can also add this IBM security provider, com.ibm.crypto.fips.provider.IBMJCEFIPS.

Note that code written for the IBMJSSE Provider might not compile or execute in exactly the same way for IBMJSSE2. For details, see IBMJSSE2 Provider.

Hardware Crypto support

The IBM 32-bit SDK for AIX(R), v5.0 supports the following cryptographic adapters:

IBM's JSSE2 provider can use these adapters through the IBMPKCS11impl provider.

Note:
  1. You can install more than one adapter in any given machine.
  2. If you install more than one adapter, its driver determines how each card is assigned to slots.
  3. When a slot number is not specified, 0 is assigned.

IBM PCI Cryptographic Coprocessor

The IBM PCI Cryptographic Coprocessor adapter adds a high-security environment to your AIX server systems for DES, RSA, and DSA cryptographic functions and sensitive custom applications. The PCI board incorporates specialized electronics that allow you to remove time-consuming cryptographic functions from your servers while providing a secure computing environment for storing keys and performing sensitive processing. The hardware is certified under FIPS PUB 140-1 at levels 3 and 4, and assures a high-integrity processing environment.

For more information, see the IBM PCI Cryptographic Coprocessor's home page at http://www.ibm.com/security/cryptocards/index.shtml.

Installing the adapter hardware

For installation instructions, go to the IBM PCI Cryptographic Coprocessor's home page, click on the Library link in the left-hand panel, and select the IBM 4758 Installation Manual link. Alternatively, download the PDF from ftp://www6.software.ibm.com/software/cryptocards/IBM4758223.pdf.

Installing the coprocessor's AIX device driver

After installing the adapter hardware, you must install its AIX device driver. The device driver is in the package devices.pci.14109f00 that is shipped on the base AIX v5.1/5.2 CDs. If you are running AIX v5.1, install the device driver updates that shipped with the AIX 5100-04 Recommended Maintenance Package. Similarly, if you are running AIX v5.2, install the device driver updates that shipped with the AIX 5200-01 Recommended Maintenance Package. If you are running on AIX v5.3, you do not need to install any further updates.

Installing the coprocessor's PKCS #11 Support Program

The IBM PCI Cryptographic Coprocessor's PKCS #11 Support Program loads the PKCS #11 microcode onto the adapter. To download the Support Program:

Loading PKCS #11 microcode onto the adapter

You can find instructions for loading the PKCS #11 microcode onto the adapter in Chapter 4 of the IBM 4758 PCI Cryptographic Coprocessor, PKCS #11 Support Program Installation Manual for IBM 4758 Models 002 & 023 Release 2.4.1.0. On AIX, the program used to load code is /usr/sbin/csufclu. The microcode is in the directory /usr/lpp/csuf/clu.

Installing and configuring AIX PKCS #11 Subsystem

The AIX PKCS #11 subsystem is packaged in bos.pkcs11 (on the AIX v5.1/5.2 CDs). If you are running AIX v5.1, install the updates that shipped with the AIX 5100-04 Recommended Maintenance Package. Similarly, if you are running AIX v5.2, install the updates that shipped with the AIX 5200-01 Recommended Maintenance Package. If you are running on AIX v5.3, you do not need to install any further updates.

The documentation for configuring this software is in the PKCS #11 chapter of the Security Guide in the AIX v5.2 documentation.

Tip: The IBM SDK requires no special installation or configuration to use the adapter because it uses the PKCS#11 interface to communicate with the adapter.

IBM e-business Cryptographic Accelerator

The IBM e-business Cryptographic Accelerator is a short form factor PCI Secure Socket Layer (SSL) hardware accelerator adapter that offloads compute-intensive public-key cryptographic processing from the host.

The overall operation control, including command decoding, is implemented in hardware and requires no on-card microprocessor subsystem. As such, the adapter is a less expensive alternative for organizations and individuals who need the high cryptographic performance that hardware acceleration provides but do not require the high security of the on-card secure programming environment such as the PCI Cryptographic Coprocessor.

Installing the adapter hardware

For instructions about installing the Cryptographic Accelerator hardware, see the manuals that accompanied the adapter. For general information on installing adapters in your pSeries system, see the Installation Manual that shipped with your system. These manuals are also available online at http://publib16.boulder.ibm.com/pseries/en_US/infocenter/base/.

Installing the Cryptographic Accelerator's AIX device driver

After installing the adapter hardware, you must install its AIX device driver. The device driver is in the package devices.pci.1410e601, that is shipped on the base AIX v5.1/5.2 CDs. If you are running AIX v5.1, install the device driver updates that shipped with the AIX 5100-04 Recommended Maintenance Package. Similarly, if you are running AIX v5.2, install the device driver updates that shipped with the AIX 5200-01 Recommended Maintenance Package. If you are running on AIX v5.3, you do not need to install any further updates.

Installing and configuring AIX PKCS #11 Subsystem

The AIX PKCS #11 subsystem is packaged in bos.pkcs11 (located on the AIX 5.1/5.2 CDs). If you are running AIX v5.1, install the updates that shipped with the AIX 5100-04 Recommended Maintenance Package. Similarly, if you are running AIX v5.2, install the updates that shipped with the AIX 5200-01 Recommended Maintenance Package. If you are running on AIX v5.3, you do not need to install any further updates.

Tip: The IBM SDK requires no special installation or configuration to use the adapter because it uses the PKCS#11 interface to communicate with the adapter.

The documentation for configuring this software is in the PKCS #11 chapter of the Security Guide in the AIX v5.2 documentation.

iKeyman tool

Overview of the iKeyman tool.

The iKeyman utility is a tool for managing your digital certificates. With iKeyman, you can:

What's new?

History of changes to the iKeyman tool.

There are no changes for v5.0 over v1.4.2.

There are no changes in v1.4.2 over v1.4.1.

The following change was added in v1.4.1:

Documentation

Available documentation for the iKeyman tool.

The iKeyman User Guide is on the developerWorks Web site, at http://www.ibm.com/developerworks/java/jdk/security/index.html.

Java Authentication and Authorization Service (JAAS) V2.0

The Sun Microsystems Java 2 platform provides a means to enforce access controls based on where code came from and who signed it. These access controls are needed because of the distributed nature of the Java platform where, for example, a remote applet can be downloaded over a public network and then run locally.

However, before SDK v1.4.0, the Java 2 platform did not provide a way to enforce similar access controls based on who runs the code. To provide this type of access control, the Java 2 security architecture requires the following:

The Java Authentication and Authorization Service (JAAS) framework provides these enhancements.

For a general overview of JAAS, see the Sun Web site: http://java.sun.com/products/jaas.

Differences between IBM and Sun versions of JAAS

The IBM version of JAAS differs from the Sun version in the following ways:

What's new?

There are no changes to JAAS in v5.0.

There are no changes in v1.4.2 over v1.4.1.

There were no changes in v1.4.1 over v1.4.0. However, the following changes were added in v1.4.0.

The original release of JAAS for AIX and the Java 2 Platform included the following login module and principal classes:

These original platform-dependent principal classes will be replaced by a set of platform-independent principal classes in future releases of JAAS for AIX. To ease migration, this version of JAAS contains the original set as well as the new set of principal classes. Also included is a new login module called com.ibm.security.auth.module.AIXLoginModule2000, which has the same function as AIXLoginModule but references the new set of principals. Additional principal classes have been included to facilitate the writing of new login modules.

You are encouraged to use the new set of principals when developing applications that use JAAS. Previously developed applications will be compatible with this version as well as future versions of JAAS released for the SDK v1.4.0.

If migrating applications to the new set of principals is desired, then most changes encountered will be in JAAS policy and configuration files rather than in the applications. Refer to the following table for guidance.

Table 1. New class names
Original class Replaced by
AIXPrincipal UsernamePrincipal
AIXNumericGroupPrincipal GroupIDPrincipal  PrimaryGroupIDPrincipal
AIXNumericUserPrincipal UserIDPrincipal
n/a DomainPrincipal
n/a DomainIDPrincipal
n/a ServerPrincipal
n/a WkstationPrincipal
AIXLoginModule AIXLoginModule2000

Principal classes are found in the com.ibm.security.auth package while the login module is found in the com.ibm.security.auth.module package. Check the JAAS API documentation (javadoc) for more information on the new principal classes.

For example, this JAAS policy grant block:

grant Principal com.ibm.security.auth.AIXPrincipal "bob",
      Principal com.ibm.security.auth.AIXNumericUserPrincipal 
           "727",
      Principal com.ibm.security.auth.AIXNumericGroupPrincipal 
           "12" {
   permission java.util.PropertyPermission "java.home", "read";
};

would be replaced by:

grant Principal com.ibm.security.auth.UsernamePrincipal "bob",
      Principal com.ibm.security.auth.UserIDPrincipal "727",
      Principal com.ibm.security.auth.GroupIDPrincipal "12" {
   permission java.util.PropertyPermission "java.home", "read";
};

Documentation

For detailed information, including API documentation and samples, see the developerWorks Web site at http://www.ibm.com/developerworks/java/jdk/security/index.html. This site contains the LoginModule Developer's Guide and sample code in "HelloWorld.tar".

Java Certification Path (CertPath)

The Java Certification Path API provides interfaces and abstract classes for creating, building, and validating certification paths (also known as "certificate chains").

Differences between IBM and Sun versions of CertPath

The IBM CertPath classes differ from the Sun version in the following ways:

What's new?

The following changes have been added in v5.0:

The following changes were added in v1.4.2:

The following changes were added in v1.4.1 SR1:

There were no changes in v1.4.1 over v1.4.0.

The following changes were added in v1.4.0:

Documentation

For detailed information, including API documentation and samples, see the developerWorks Web site, at http://www.ibm.com/developerworks/java/jdk/security/index.html.

Java Cryptography Extension (JCE)

The Java Cryptography Extension (JCE) provides a framework and implementations for encryption, key generation and key agreement, and Message Authentication Code (MAC) algorithms. Support for encryption includes symmetric, asymmetric, block, and stream ciphers. The software also supports secure streams and sealed objects. JCE supplements the Java 2 platform, which already includes interfaces and implementations of message digests and digital signatures.

You can obtain unrestricted jurisdiction policy files from http://www.ibm.com/developerworks/java/jdk/security/index.html.

The v1.4.2 unrestricted (and restricted) jurisdiction policy files are suitable for use with v5.0. The v1.4.1 files are not suitable.

Differences between IBM and Sun versions of JCE

The com.sun.* packages are reimplemented by IBM and renamed com.ibm.* packages.

The IBM version of JCE differs from the Sun version in the following ways:

What's new?

The following changes are made in v5.0:

The following changes were made in v1.4.2:

There were no changes in v1.4.1 from v1.4.0.

The following changes were made in v1.4.0:

Documentation

For detailed information, including API documentation and samples, see the developerWorks Web site at http://www.ibm.com/developerworks/java/jdk/security/index.html.

Java Generic Security Service (JGSS)

The Java Generic Security Service (JGSS) API provides secure exchange of messages between communicating applications.

The JGSS is an API framework that has Kerberos V5 as the underlying default security mechanism. The API is a standardized abstract interface under which you can plug different security mechanisms that are based on private-key, public-key, and other security technologies. JGSS shields secure applications from the complexities and peculiarities of the different underlying security mechanisms. JGSS provides identity and message origin authentication, message integrity, and message confidentiality. JGSS also features an optional Java Authentication and Authorization Service (JAAS) Kerberos login interface, and authorization checks. JAAS augments the access control features of Java 2, which is based on CodeSource with access controls based on authenticated principal identities.

Installing Kerberos

The IBM JGSS implementation shares a single configuration file with the AIX Kerberos (krb5.conf). An administration guide that describes the contents of this file and how to configure Kerberos is in the /usr/lpp/krb5/doc tree after the Kerberos fileset has been installed.

For AIX installation instructions for Kerberos, see http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixins/aixinsgd/install_kerberos.htm.

The AIX Expansion Pack CD (see http://www.ibm.com/servers/aix/expansionpack/) contains both the client and server versions of the IBM Network Authentication Service (which implements Kerberos). The Expansion Pack also has filesets containing both pdf and html versions of the Network Authentication Service Administrator's and User's Guide. English, French, Spanish, Japanese, Chinese, and Korean versions of this guide are available. The filesets are named krb5.doc.<locale>.pdf or krb5.doc.<locale>.html (where <locale> is one of the previously mentioned languages). After installation, the guide is located in a subdirectory of /usr/lpp/krb5/doc.

Differences between IBM and Sun versions of JGSS

The IBM version of JGSS differs from the Sun version in the following ways:

What's new?

The following change is added in v5.0 Service Refresh 1:

AES is now a supported algorithm type
These additional algorthims can be set in the krb5.conf file under [libdefault] as follows:
default_tkt_enctypes = aes128-cts-hmac-sha1-96
default_tkt_enctypes = aes256-cts-hmac-sha1-96
default_tgs_enctypes = aes128-cts-hmac-sha1-96
default_tgs_enctypes = aes256-cts-hmac-sha1-96

default_checksum = hmac-sha1-96-aes128
default_checksum = hmac-sha1-96-aes256

The following changes are added in v5.0:

TCP or UDP Preference Configuration
JSE now supports the use of the udp_preference_limit property in the Kerberos configuration file (krb5.ini). When sending a message to the KDC, the JSE Kerberos library will use TCP if the size of the message is above udp_preference_list. If the message is smaller than udp_preference_list, UDP will be tried up to three times. If the KDC indicates that the request is too big, the JSE Kerberos library will use TCP.
IPv6 support in Kerberos
JSE now supports IPv6 addresses in Kerberos tickets. Before J2SE 5, only IPv4 addresses were supported in tickets.
TGT Renewals
The Java Authentication and Authorization Server (JAAS) Kerberos login module in v5.0, Krb5LoginModule, now supports Ticket Granting Ticket (TGT) renewal. This support allows long-running services to renew their TGTs automatically without user interaction or requiring the services to restart. With this feature, if Krb5LoginModule obtains an expired ticket from the ticket cache, the TGT will be automatically renewed and be added to the Subject of the caller who requested the ticket. If the ticket cannot be renewed for any reason, Krb5LoginModule will use its configured callback handler to retrieve a username and password to acquire a new TGT.

To use this feature, configure Krb5LoginModule to use the ticket cache and set the newly introduced renewTGT option to true. Here is an example of a JAAS login configuration file that requests TGT renewal:

server {
  com.ibm.security.auth.module.Krb5LoginModule required
        principal=principal@your_realm
		useDefaultCcache=TRUE
		 renewTGT=true;
};
Note that if renewTGT is set to true, useDefaultCcache must also be set to true; otherwise, it results in a configuration error.

The following changes were added in v1.4.2:

Configurable Kerberos Settings
You can provide the name and realm settings for the Kerberos Key Distribution Center (KDC) either from the Kerberos configuration file or by using the system properties files java.security.krb5.kdc and java.security.krb5.realm. You can also specify the boolean option refreshKrb5Config in the entry for Krb5LoginModule in the JAAS configuration file. If you set this option to true, the configuration values will be refreshed before the login method of the Krb5LoginModule is called.
Support for Slave Kerberos Key Distribution Center
Kerberos uses slave KDCs so that, if the master KDC is unavailable, the slave KDCs will respond to your requests. In previous releases, Kerberos tried the master KDC only and would give up if there was no response within the default KDC timeout.
Support TCP for Kerberos Key Distribution Center Transport
Kerberos uses UDP transport for ticket requests. In cases where Kerberos tickets exceed the UDP packet size limit, Kerberos supports automatic fallback to TCP. If a Kerberos ticket request using UDP fails and the KDC returns the error code KRB_ERR_RESPONSE_TOO_BIG, TCP becomes the transport protocol.
Kerberos Service Ticket in the Subject's Private Credentials
The Kerberos service ticket is stored in the Subject's private credentials. This gives you access to the service ticket so that you can use it outside the JGSS (for example, in native applications or for proprietary uses). In addition, you can reuse the service ticket if the application tries to establish a security context to the same service again. The service ticket should be valid for it to be reusable.

The following change was added in v1.4.1:

Documentation

For detailed information about JGSS, including API documentation and samples, see the developerWorks Web site, at http://www.ibm.com/developerworks/java/jdk/security/index.html.

IBMJSSE2 Provider

The Java Secure Socket Extension (JSSE) is a Java package that enables secure internet communications. It implements a Java version of SSL (Secure Sockets Layer) and TLS (Transport Layer Security) protocols and includes functions for data encryption, server authentication, message integrity, and optional client authentication.

By abstracting the complex underlying security algorithms and "handshaking" mechanisms, JSSE minimizes the risk of creating subtle but dangerous security vulnerabilities. Also, it simplifies application development by serving as a building block that you can integrate directly into your applications. Using JSSE, you can provide for the secure passage of data between a client and a server running any application protocol (such as HTTP, Telnet, NNTP, and FTP) over TCP/IP.

In v5.0, the IBMJSSE2 Provider, which was introduced in the v1.4.2 JVM, has replaced the IBMJSSE Provider. Although they are nearly equivalent, there are differences between the two providers. See the next section for details.

Differences between the IBMJSSE Provider and the IBMJSSE2 Provider

The now-discontinued IBMJSSE Provider and the IBMJSSE2 Provider differ in the following ways:

Differences between the IBMJSSE2 Provider and Sun's version of JSSE

The IBMJSSE2 Provider differs from the Sun JSSE in the following ways:

What's new?

The following change takes effect from v5.0 Service Refresh 5:

The following changes have been added in v5.0

The IBMJSSE2 Provider was new for v1.4.2.

Documentation

For detailed information, including API documentation and samples, see http://www.ibm.com/developerworks/java/jdk/security/index.html.

Java Certificate Management Protocol (CMP)

Java Certificate Management Protocol (CMP) provides support to online interactions between Public Key Infrastructure (PKI) components. For example, a management protocol might be used between a Certificate Authority (CA) and a client system with which a key pair is associated, or between two CAs that issue cross-certificates for each other. The IBM CMP package provides all the java classes that are necessary to handle PKI Certificate Management Protocol. For instance, a CMP message can be process by PKIMessage, PKIHeader and PKIBody. Besides CMP, Certificate Request Message Format (CRMF) is also necessary for processing CRMF and CMP messages.

For a full description of CMP, refer to RFC 2510 and 2511 for CRMF.

Differences between IBM and Sun versions of CMP

Sun does not provide a version of Java CMP with their Java 1.4 SDK.

What's new?

No changes have been made to this version.

Documentation

For detailed information, including API documentation and samples, see the developerWorks Web site at http://www.ibm.com/developerworks/java/jdk/security/index.html.

IBMPKCS11Impl Provider

The IBMPKCS11Impl Provider uses the Java Cryptography Extension (JCE) and Java Cryptography Architecture (JCA) frameworks to add the ability to use hardware cryptography through the Public Key Cryptographic Standards #11 (PKCS #11) standard.

This provider takes advantage of hardware cryptography within the existing JCE architecture and gives Java programmers the significant security and performance advantages of hardware cryptography with minimal changes to existing Java applications. Because the complexities of hardware cryptography are handled within the normal JCE, advanced security and performance using hardware cryptographic devices is available readily.

PKCS#11 is a standard that provides a common application interface to cryptographic services on various platforms through several hardware cryptographic devices. See the IBMPKCS11Impl provider user guide for a list of supported devices.

Differences between IBM and Sun versions of IBMPKCS11Impl

The most significant difference between the Sun PKCS11 provider and the IBM PKCS11Impl provider is in the area of keystore. Sun has a keystore named PKCS11 and IBM has one called IBMPKCS11KS. Sun requires that all trusted certificates have the attribute CKA_TRUSTED set to true. The IBM keystore assumes that any certificates on the device are trusted. So, this assumption should allow IBM's keystore to work with data that was saved using the Sun PKCS11 provider keystore, but not the other way around.

What's new?

The following changes were made in v5.0.

IBMPKCS11Impl has been updated to allow more algorithms and to allow the Sun 5.0 methods of initialization of the provider. The new algorithms are:

In v5.0, the ability to pass in a configuration file to the provider is added. This configuration file can contain a significant amount of information about the device; for example, what it should or should not do. After the provider is created, the application can log in to the card in different ways. Some devices allow you to perform some cryptographic functions without logging into the device. The v1.4.2 ways to initialize the device still work. However, you can no longer have more than one of these providers at a time. Instead, with this release, you can initialize more than one IBMPKCS11Impl provider using the 5.0 configuration file and login methods.

The classes DESPKCS11KeyParameterSpec and DESedePKCS11KeyParameterSpec have been deprecated. Use the GeneralPKCS11KeyParameterSpec class for all symmetric key types (for instance, DES, DESede, AES, RC4, Blowfish).

The IBMPKCS11Impl Provider was new for v1.4.2.

Documentation

For detailed information, including API documentation, see the developerWorks Web site at http://www.ibm.com/developerworks/java/jdk/security/index.html.

IBMJCEFIPS Provider

The IBM Java JCE (Java Cryptographic Extension) FIPS Provider (IBMJCEFIPS) for multi-platforms is a scalable, multi-purpose cryptographic module that supports FIPS-approved cryptographic operations through Java APIs.

The IBMJCEFIPS includes the following Federal Information Processing Standards (FIPS) 140-2 [Level 1] compliant components:

To meet the requirements specified in the FIPS publication 140-2, the encryption algorithms used by the IBMJCEFIPS Provider are isolated into the IBMJCEFIPS Provider cryptographic module, which you can access using the product code from the Java JCE framework APIs. Because the IBMJCEFIPS Provider uses the cryptographic module in an approved manner, the product complies with the FIPS 140-2 requirements.

Type Algorithm Specification
Symmetric Cipher AES (ECB, CBC, OFB, CFB and PCBC) FIPS 197
Symmetric Cipher Triple DES (ECB, CBC, OFB, CFB and PCBC) FIPS 46-3
Message Digest
SHA1
SHA-256
SHA-384
SHA-512
HMAC-SHA1
FIPS 180-2



FIPS 198a
Random Number Generator FIPS 186-2 Appendix 3.1 FIPS 186-2
Digital Signature DSA (512 - 1024) FIPS 186-2
Digital Signature RSA (512 - 2048) FIPS 186-2

In addition, the IBMJCEFIPS supports the following unapproved algorithms:

Type Algorithm Specification
Asymmetric Cipher RSA PKCS#1
Key Agreement Diffie-Hellman PKCS #3 (Allowed in Approved mode)
Digital Signature DSAforSSL Allowed for use within the TLS protocol
Digital Signature RSAforSSL Allowed for use within the TLS protocol
Message Digest MD5 FIPS 180-2
Random Number Generation Universal Software Based Random Number Generator Available upon request from IBM. Patented by IBM, EC Pat. No. EP1081591A2, U.S. pat. Pend.
Important: The com.ibm.crypto.fips.provider.IBMJCEFIPS class does not include a keystore (such as JKS or JCEKS) because of FIPS requirements and algorithms. Therefore, if you are using com.ibm.crypto.fips.provider.IBMJCEFIPS and require JKS, you must specify the com.ibm.crypto.provider.IBMJCE in the provider list.

For more detailed information on the FIPS certified provider IBMJCEFIPS, see the IBM Java JCE FIPS 140-2 Cryptographic Module Security Policy. For usage information and details of the API, see the IBM Java JCE FIPS (IBMJCEFIPS) Cryptographic Module API document. These documents are available at http://www.ibm.com/developerworks/java/jdk/security/index.html.

Differences between IBM and Sun versions of IBMJCEFIPS

Sun does not provide IBMJCEFIPS.

What's new?

No updates since v1.4.2.

Documentation

For detailed information, including API documentation and Security Policy, see the developerWorks Web site, at http://www.ibm.com/developerworks/java/jdk/security/index.html.

IBM SASL Provider

Simple Authentication and Security Layer, or SASL, is an Internet standard (RFC 2222) that specifies a protocol for authentication and optional establishment of a security layer between client and server applications. SASL defines how authentication data is to be exchanged but does not itself specify the contents of that data. It is a framework into which specific authentication mechanisms that specify the contents and semantics of the authentication data can fit.

The Java SASL API defines classes and interfaces for applications that use SASL mechanisms. It is defined to be mechanism-neutral: the application that uses the API need not be hardwired into using any particular SASL mechanism. The API supports both client and server applications. It allows applications to select the mechanism to use based on desired security features, such as whether they are susceptible to passive dictionary attacks or whether they accept anonymous authentication. The Java SASL API also allows developers to use their own, custom SASL mechanisms. SASL mechanisms are installed by using the Java Cryptography Architecture (JCA).

The IBMSASL provider supports the following client and server mechanisms.

Client mechanisms
Server mechanisms

Differences between Sun and IBM SASL Provider

Only the package names, for example com.ibm.security.sasl, and the provider name are different from the Sun Implementation: com.ibm.security.sasl.IBMSASL.

What's new

The IBM SASL Provider is new for v5.0

Documentation

Detailed information, including API documentation and samples, is on the developerWorks Web site, at http://www.ibm.com/developerworks/java/jdk/security/index.html.

Key Certificate Management utilities

Uses of the Key Certificate Management utilities.

The Key Certificate Management utilities make up a set of packages used to:

The Key Certificate Management utilities can:

The Subject Key Identifier is specified in RFC 3820, Section 4.2.1.2, http://www.faqs.org/rfcs/rfc3820.html.

What's new

The Key Certificate Management utilities are new for Version 5.0, Service Refresh 1.

Documentation

The Key Certificate Management How-to Guide and Javadoc are on the developerWorks Web site, at http://www.ibm.com/developerworks/java/jdk/security/index.html.

Notices

This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.

IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to:

For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property Department in your country or send inquiries, in writing, to:

The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law:

INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.

This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the information. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this information at any time without notice.

Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk.

IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you.

Licensees of this program who wish to have information about it for the purpose of enabling (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact:

Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.

The licensed program described in this document and all licensed material available for it are provided by IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement or any equivalent agreement between us.

Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurement may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment.

Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.

Trademarks

IBM and AIX are trademarks or registered trademarks of International Business Machines Corporation in the United States, or other countries, or both.

IBM is a trademark of International Business Machines Corporation in the United States, or other countries, or both.

Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.

Microsoft(R), Windows(R) and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.

Other company, product, or service names may be trademarks or service marks of others.

This product is also based in part on the work of the FreeType Project. For more information about Freetype, see http://www.freetype.org.

This product includes software developed by the Apache Software Foundation http://www.apache.org/.