Inhaltsverzeichnis
4.3 Validazione Modalità FIPS
Questa pagina mostra come validare la modalità FIPS della vostra installazione OpenSSL.
Verifica Provider FIPS
$openssl = "D:\Projects\openssl-3.6.0\bin\bin\openssl.exe" # Impostare environment $env:OPENSSL_CONF = "D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf" # Elencare i provider & $openssl list -providers
Con FIPS attivo:
Providers:
base
name: OpenSSL Base Provider
version: 3.6.0
status: active
fips
name: OpenSSL FIPS Provider
version: 3.6.0
status: active
Senza FIPS:
Providers:
default
name: OpenSSL Default Provider
version: 3.6.0
status: active
Verifica Algoritmi FIPS
In modalità FIPS sono disponibili solo algoritmi certificati.
Algoritmi Hash Consentiti
& $openssl list -digest-algorithms
Consentiti FIPS:
- SHA-256, SHA-384, SHA-512
- SHA3-256, SHA3-384, SHA3-512
- SHAKE128, SHAKE256
Non consentiti FIPS:
- ~~MD5~~
- ~~SHA1~~ (solo per compatibilità)
- ~~MD4~~
Algoritmi di Firma Consentiti
& $openssl list -signature-algorithms
Consentiti FIPS:
- RSA (≥2048 bit)
- ECDSA (P-256, P-384, P-521)
- ML-DSA-44, ML-DSA-65, ML-DSA-87
Auto-Test FIPS
Il provider FIPS esegue auto-test durante il caricamento:
# Modalità verbose per output auto-test $env:OPENSSL_FIPS_TEST = "1" & $openssl list -providers
In caso di auto-test falliti, il provider FIPS non viene attivato!
Verifica Integrità Modulo FIPS
I moduli FIPS hanno un hash integrato per la verifica dell'integrità:
# Generare/verificare hash modulo FIPS & $openssl fipsinstall -verify -module "D:\Projects\openssl-3.6.0\bin\lib\ossl-modules\fips.dll" -in "D:\Projects\openssl-3.6.0\bin\ssl\fipsmodule.cnf"
Output atteso:
VERIFY PASSED
In caso di errore:
VERIFY FAILED
Se VERIFY FAILED: La DLL potrebbe essere stata modificata. Ricompilare!
Test: Algoritmo Non-FIPS Bloccato
In modalità FIPS, MD5 dovrebbe essere bloccato:
# MD5 dovrebbe fallire & $openssl dgst -md5 test.txt 2>&1
Output atteso (con FIPS):
Error setting digest xxxx:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported
Se MD5 funziona, FIPS non è attivo!
Verifica Proprietà FIPS nel Codice
In C o .NET potete verificare FIPS programmaticamente:
// Esempio C# P/Invoke [DllImport("libcrypto-3-x64.dll")] private static extern int OSSL_PROVIDER_available(IntPtr libctx, string name); public static bool IsFipsAvailable() { return OSSL_PROVIDER_available(IntPtr.Zero, "fips") == 1; }
Checklist per Conformità FIPS
| # | Punto di Verifica | Stato |
| — | ——————- | ——- |
| 1 | enable-fips usato durante il build | ☐ |
| 2 | fips.dll presente in ossl-modules/ | ☐ |
| 3 | fipsmodule.cnf generato | ☐ |
| 4 | openssl.cnf con provider FIPS attivato | ☐ |
| 5 | openssl list -providers mostra FIPS attivo | ☐ |
| 6 | fipsinstall -verify PASSED | ☐ |
| 7 | MD5 bloccato (test) | ☐ |
Risoluzione Problemi
"FIPS provider not available"
- È stato compilato con
enable-fips? fips.dllè presente?openssl.cnfè configurato correttamente?
"Self test failed"
- Reinstallare i moduli:
nmake install_fips - Rigenerare l'hash:
openssl fipsinstall …
MD5 funziona (dovrebbe essere bloccato)
default_properties = fips=yesmanca in openssl.cnf- Environment
OPENSSL_CONFnon impostato
Continua con
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional