For up-to-date product documentation, see the IBM MobileFirst Foundation Developer Center.
FIPS 140-2 support
Federal Information Processing Standards (FIPS) are standards and guidelines that are issued by the United States National Institute of Standards and Technology (NIST) for federal government computer systems. FIPS Publication 140-2 is a security standard used to accredit cryptographic modules. IBM MobileFirst™ Platform Foundation provides FIPS 140-2 support for Android, iOS, and Cordova apps.
FIPS 140-2 on the MobileFirst Server, and SSL communications with the MobileFirst Server
The IBM MobileFirst Platform Foundation server runs in an application server, such as the WebSphere® Application Server. The WebSphere Application Server can be configured to enforce the use of FIPS 140-2 validated cryptographic modules for inbound and outbound Secure Socket Layer (SSL) connections. The cryptographic modules are also used for the cryptographic operations that are performed by the applications by using the Java Cryptography Extension (JCE). Since the MobileFirst Server is an application that runs on the application server, it uses the FIPS 140-2 validated cryptographic modules for the inbound and outbound SSL connections.
When an IBM MobileFirst Platform Foundation client transacts a Secure Socket Layer (SSL) connection to a MobileFirst Server, which is running on an application server that is using the FIPS 140-2 mode, the results are the successful use of the FIPS 140-2 approved cipher suite. If the client platform does not support one of the FIPS 140-2 approved cipher suites, the SSL transaction fails and the client is not able to establish an SSL connection to the server. If successful, the client uses a FIPS 140-2 approved cipher suite.
Note: The cryptographic module instances that are used on the client are not necessarily FIPS 140-2 validated. For options to use FIPS 140-2 validated libraries on client devices, see FIPS 140-2 on the MobileFirst client device for protection of data at rest in JSONStore and data in motion when using HTTPS communications. Specifically, the client and server are using the same cipher suite (SSL_RSA_WITH_AES_128_CBC_SHA for example), but the client side cryptographic module perhaps did not go through the FIPS 140-2 validation process, whereas the server side is using FIPS 140-2 certified modules.
See References for links to documentation to enable FIPS 140-2 mode in WebSphere Application Server.
FIPS 140-2 on the MobileFirst client device for protection of data at rest in JSONStore and data in motion when using HTTPS communications
Protection of data at rest on the client device is provided by the JSONStore feature of IBM MobileFirst Platform Foundation. Protection of data in motion is provided by the use of HTTPS communication between the MobileFirst client and the MobileFirst Server.
On iOS devices, the FIPS 140-2 support is enabled by default for both data at rest and data in motion.
Android devices use non-FIPS 140-2 validated libraries by default. There is an option to use FIPS 140-2 validated libraries for the protection (encryption and decryption) of the local data that is stored by JSONStore and for the HTTPS communication to the MobileFirst Server. This support is achieved by using an OpenSSL library that achieved FIPS 140-2 validation (Certificate #1747). To enable this option in a MobileFirst client project, add the optional Android FIPS 140-2 plug-in.
Note: There are some restrictions to be aware of:
- This FIPS 140-2 validated mode applies only to the protection (encryption) of local data that is stored by the JSONStore feature and protection of HTTPS communications between the MobileFirst client and the MobileFirst Server.
- This feature is only supported on the iOS and Android platforms.
- On Android, this feature is only supported on devices or simulators that use the x86 or armeabi architectures. It is not supported on Android using armv5 or armv6 architectures. The reason is because the OpenSSL library used did not obtain FIPS 140-2 validation for armv5 or armv6 on Android. FIPS 140-2 is not supported on 64-bit architecture even though the MobileFirst library does support 64-bit architecture. FIPS 140-2 can be run on 64-bit devices if the project includes only 32-bit native NDK libraries.
- On iOS, it is supported on i386, x86_64, armv7, armv7s, and arm64 architectures.
- This feature works with hybrid applications only (not with native applications).
- For native iOS, FIPS is enabled through the iOS FIPS libraries and is enabled by default. No action is required to enable FIPS 140-2.
- For HTTPS communications:
- For Android devices, only the communications between the MobileFirst client and the MobileFirst Server use the FIPS 140-2 libraries on the client. Direct connections to other servers or services do not use the FIPS 140-2 libraries.
- The MobileFirst client can only communicate with a MobileFirst Server that runs in supported environments, which are listed in the System Requirements. If the MobileFirst Server runs in a non-supported environment, the HTTPS connection might fail with a key size too small error. This error does not occur with HTTP communications.
- IBM MobileFirst Platform Application Center client does not support the FIPS 140-2 feature.
If you previously made the changes that are described in the tutorial, we must first save any other environment-specific changes that you made, and then delete and re-create your Android or iOS environments.
Figure 1. Example
For more information about JSONStore, see JSONStore overview.
References
For information about how to enable FIPS 140-2 mode in WebSphere Application Server, see Federal Information Processing Standard support.
For the WebSphere Application Server Liberty profile, no option is available in the administrative console to enable FIPS 140-2 mode. But we can enable FIPS 140-2 by configuring the Java™ runtime environment to use the FIPS 140-2 validated modules. For more information, see Java Secure Socket Extension (JSSE) IBMJSSE2 Provider Reference Guide.
- Enabling FIPS 140-2
To use the Federal Information Processing Standard (FIPS) 140-2 feature, we must first enable the FIPS 140-2 optional feature.- Configure FIPS 140-2 mode for HTTPS and JSONStore encryption
Learn about settings to configure FIPS 140-2 for encrypting data for HTTPS and JSONStore.- Configure FIPS 140-2 for existing applications
You must modify applications that were created in earlier versions of IBM MobileFirst Platform Foundation to enable the FIPS 140-2 feature.
Parent topic: Federal standards support in IBM MobileFirst Platform Foundation