IBM Z and LinuxONE - IBM Z

IBM Z

The enterprise platform for mission-critical applications brings next-level data privacy, security, and resiliency to your hybrid multicloud.

 View Only

FIPS-Approved Cryptography: A Look at Permitted Algorithms, Restricted Mechanisms, and Real-World Compliance Considerations

By Swati Birthariya posted 18 hours ago

  

FIPS-Approved Cryptography: A Look at Permitted Algorithms, Restricted Mechanisms, and Real-World Compliance Considerations

Abstract

Modern platforms rely on cryptographic algorithms to protect data and ensure confidentiality, integrity, and authenticity. In regulated sectors like government, defense, healthcare, and finance, these systems must follow strict security standards. One of the key sets of guidelines that defines these requirements is FIPS (Federal Information Processing Standards).

This article explains what FIPS compliance means, provides an overview of approved and non-approved algorithms, and discusses real-world challenges when assessing systems for FIPS readiness. The goal is to give a simple, helpful overview for people handling security-sensitive applications.


What Is FIPS and Why It Matters

FIPS is a set of security standards published by NIST (National Institute of Standards and Technology). These standards help ensure that cryptographic tools used in sensitive environments meet strong security requirements.

One key standard is FIPS 140-3, which explains how encryption tools should be built and checked for security.

A system is considered FIPS-compliant only if:

  • It uses FIPS-validated cryptographic modules

  • It relies exclusively on FIPS-approved algorithms

  • It avoids all non-approved algorithms

  • It manages encryption keys and creates strong random numbers using safe methods recommended by NIST, so the system stays secure and hard to break.



FIPS-Approved Algorithms

Symmetric Encryption

Algorithm: AES
Key sizes: 128, 192, 256
Approved modes: CBC, CFB, OFB, CTR, GCM, CCM

Hash Algorithms

SHA-2: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256
SHA-3: SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256

MAC Algorithms

HMAC (only when combined with SHA-2 or SHA-3)

Asymmetric Algorithms

RSA (minimum 2048 bits)
ECDSA (curves P-256, P-384, P-521)

Key Exchange

FFDHE (groups 2048 bits and above)
ECDH / ECDHE (P-256, P-384, P-521)


Non-FIPS Algorithms (Disallowed)

Some algorithms are explicitly disallowed due to weaknesses or because they are not part of NIST’s approved list.

Category

Examples

Reason Not Allowed

Weak Hashes MD5, SHA-1 Vulnerable to collisions; not approved for secure hashing
Old Ciphers DES, 3DES, RC4 Outdated and weak; susceptible to brute-force and known attacks
Non-NIST Curves Curve25519, Ed25519 Not part of NIST-approved ECC curves list
Weak DH DHE-1024, Custom Groups Insufficient key strength; non-standard and insecure groups


Where Non-FIPS Algorithms Commonly Appear

In real-world systems, non-FIPS algorithms often hide in unexpected places:

  • Old certificate fingerprints (MD5, SHA-1)

  • SSH host key fingerprints using MD5

  • TLS configurations with 3DES or SHA-1

  • Legacy code in old libraries

  • Debugging utilities that still use MD5

  • Deep transitive dependencies

This is why scanning alone is often insufficient.


Why Detection Is Difficult

Detecting non-FIPS cryptography is challenging because:

  • Some algorithms are chosen dynamically at runtime

  • Libraries silently fall back to weaker algorithms

  • Native extensions or compiled modules hide crypto usage

  • Indirect dependencies may internally use non-FIPS algorithms

Only full runtime testing under enabled FIPS mode can accurately validate compliance.


How FIPS Mode Works on Linux

Linux systems provide built-in support for enforcing FIPS compliance.

Either of the following commands can be used to check whether FIPS mode is enabled:

sysctl crypto.fips_enabled
fips-mode-setup --check

To enable FIPS mode:

fips-mode-setup --enable reboot

To disable FIPS mode:

fips-mode-setup --disable reboot

When enabled, Linux automatically blocks non-FIPS algorithms, restricts TLS cipher suites, and ensures the use of validated random number generators.


Best Practices for Building FIPS-Ready Systems

  1. Use SHA-2 or SHA-3 for all hashing.

  2. Prefer AEAD modes—AES-GCM or AES-CCM.

  3. Avoid non-NIST curves such as Curve25519 or Ed25519.

  4. Regularly review dependencies and transitive libraries.

  5. Run full integration tests inside a real FIPS-enabled environment.


Conclusion

FIPS compliance is about ensuring trust and security. By using approved cryptographic modules, following strong key-management practices, and testing the system in FIPS mode, organisations can show that their platform is safe, reliable, and suitable for regulated environments. This approach reduces vulnerabilities and helps maintain strong and auditable cryptography.

0 comments
6 views

Permalink