Enable FIPS Mode
This page describes how to enable FIPS 140-3 ready cryptography for AIStor deployments on Linux.
When enabled, FIPS mode restricts cryptographic operations to algorithms that align with the Federal Information Processing Standards (FIPS) 140-3 program. Organizations subject to U.S. federal government compliance requirements, or those with similar regulatory needs, may require FIPS-aligned cryptography.
Overview
AIStor uses Go 1.24’s native FIPS 140-3 cryptographic module.
Enable FIPS mode at runtime with the GODEBUG environment variable.
There is no separate binary required.
With FIPS mode enabled, the following apply:
- TLS connections use only AES-GCM cipher suites (CHACHA20-POLY1305 is excluded).
- Object encryption (DARE) uses only AES-256-GCM.
- SSH/SFTP connections exclude weak key exchange algorithms and non-compliant ciphers.
- JWT operations use FIPS-validated SHA3 implementations.
Enable FIPS mode
FIPS mode requires setting the GODEBUG environment variable in the AIStor environment file on all nodes in the deployment.
-
Open the environment file
Edit
/etc/default/minioon each node:sudo vi /etc/default/minio -
Add the GODEBUG variable
Add the following line to enable FIPS mode:
GODEBUG="fips140=on"The environment file should look similar to:
# AIStor Server environment file MINIO_VOLUMES="/mnt/data-{1...4}" MINIO_OPTS="--console-address :9001" MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=miniosecretkey # Enable FIPS 140-3 mode GODEBUG="fips140=on" -
Apply the change to all nodes
Copy the updated environment file to all nodes in the deployment. The contents must be identical across all nodes.
Use a utility like
shasumto verify the files match:shasum /etc/default/minio -
Restart AIStor
Restart the AIStor service on all nodes:
sudo systemctl restart minioOr use the
mcCLI to restart all nodes simultaneously:mc admin service restart ALIAS
Verify FIPS mode
Connect to the deployment and check the server information:
mc admin info ALIAS
The output indicates FIPS mode status in the server details.
You can also check the service logs for FIPS indicators:
journalctl -u minio | grep -i fips
FIPS mode cipher restrictions
The following tables summarize which cryptographic algorithms are available in FIPS mode versus standard mode.
TLS cipher suites
| Cipher Suite | Standard Mode | FIPS Mode |
|---|---|---|
TLS_AES_128_GCM_SHA256 (TLS 1.3) |
✓ | ✓ |
TLS_AES_256_GCM_SHA384 (TLS 1.3) |
✓ | ✓ |
TLS_CHACHA20_POLY1305_SHA256 (TLS 1.3) |
✓ | ✗ |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
✓ | ✓ |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
✓ | ✓ |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 |
✓ | ✓ |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 |
✓ | ✓ |
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 |
✓ | ✗ |
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 |
✓ | ✗ |
Object encryption (DARE)
| Algorithm | Standard Mode | FIPS Mode |
|---|---|---|
| AES-256-GCM | ✓ | ✓ |
| CHACHA20-POLY1305 | ✓ | ✗ |
Public key algorithms
| Algorithm | Standard Mode | FIPS Mode |
|---|---|---|
| RSA (2048-4096 bit) | ✓ | ✓ |
| ECDSA (P-256, P-384, P-521) | ✓ | ✓ |
| EdDSA/Ed25519 | ✓ | ✗ |
Considerations
Certificate compatibility
Ensure your TLS certificates use FIPS-compatible algorithms. Certificates signed with EdDSA/Ed25519 are not compatible with FIPS mode. Use ECDSA with NIST P-256/P-384/P-521 curves or RSA keys instead.
Client compatibility
Clients connecting to a FIPS-enabled deployment must support the available cipher suites. Modern TLS clients generally support AES-GCM cipher suites, but verify compatibility with older clients if necessary.
Performance
AES-GCM cipher suites benefit from hardware acceleration on most modern CPUs (AES-NI instruction set). Performance impact from enabling FIPS mode is typically minimal on hardware with AES-NI support.
Related resources
- Enable Network Encryption for TLS configuration
- Server Side Encryption for encryption at rest