Inhaltsverzeichnis
4.3 FIPS-Modus validieren
Diese Seite zeigt, wie Sie den FIPS-Modus Ihrer OpenSSL-Installation validieren.
FIPS-Provider prüfen
$openssl = "D:\Projects\openssl-3.6.0\bin\bin\openssl.exe" # Environment setzen $env:OPENSSL_CONF = "D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf" # Provider auflisten & $openssl list -providers
Mit FIPS aktiv:
Providers:
base
name: OpenSSL Base Provider
version: 3.6.0
status: active
fips
name: OpenSSL FIPS Provider
version: 3.6.0
status: active
Ohne FIPS:
Providers:
default
name: OpenSSL Default Provider
version: 3.6.0
status: active
FIPS-Algorithmen verifizieren
Im FIPS-Modus sind nur zertifizierte Algorithmen verfügbar.
Erlaubte Hash-Algorithmen
& $openssl list -digest-algorithms
FIPS-erlaubt:
- SHA-256, SHA-384, SHA-512
- SHA3-256, SHA3-384, SHA3-512
- SHAKE128, SHAKE256
Nicht FIPS-erlaubt:
- ~~MD5~~
- ~~SHA1~~ (nur für Kompatibilität)
- ~~MD4~~
Erlaubte Signatur-Algorithmen
& $openssl list -signature-algorithms
FIPS-erlaubt:
- RSA (≥2048 bit)
- ECDSA (P-256, P-384, P-521)
- ML-DSA-44, ML-DSA-65, ML-DSA-87
FIPS-Self-Tests
Der FIPS-Provider führt beim Laden Selbsttests durch:
# Verbose-Modus für Selbsttest-Output $env:OPENSSL_FIPS_TEST = "1" & $openssl list -providers
Bei fehlgeschlagenen Selbsttests wird der FIPS-Provider nicht aktiviert!
FIPS-Modul-Integrität prüfen
Die FIPS-Module haben einen eingebetteten Hash zur Integritätsprüfung:
# FIPS-Modul Hash generieren/prüfen & $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"
Erwartete Ausgabe:
VERIFY PASSED
Bei Fehler:
VERIFY FAILED
Wenn VERIFY FAILED: Die DLL wurde möglicherweise modifiziert. Neu bauen!
Test: Nicht-FIPS-Algorithmus blockiert
Im FIPS-Modus sollte MD5 blockiert sein:
# MD5 sollte fehlschlagen & $openssl dgst -md5 test.txt 2>&1
Erwartete Ausgabe (mit FIPS):
Error setting digest xxxx:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported
Wenn MD5 funktioniert, ist FIPS nicht aktiv!
FIPS-Properties in Code prüfen
In C oder .NET können Sie FIPS programmatisch prüfen:
// C# P/Invoke Beispiel [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; }
Checkliste für FIPS-Compliance
| # | Prüfpunkt | Status |
| — | ———– | ——– |
| 1 | enable-fips beim Build verwendet | ☐ |
| 2 | fips.dll in ossl-modules/ vorhanden | ☐ |
| 3 | fipsmodule.cnf generiert | ☐ |
| 4 | openssl.cnf FIPS-Provider aktiviert | ☐ |
| 5 | openssl list -providers zeigt FIPS aktiv | ☐ |
| 6 | fipsinstall -verify PASSED | ☐ |
| 7 | MD5 blockiert (Test) | ☐ |
Probleme beheben
"FIPS provider not available"
- Wurde mit
enable-fipsgebaut? - Ist
fips.dllvorhanden? - Ist
openssl.cnfkorrekt konfiguriert?
"Self test failed"
- Module neu installieren:
nmake install_fips - Hash neu generieren:
openssl fipsinstall …
MD5 funktioniert (sollte blockiert sein)
default_properties = fips=yesin openssl.cnf fehltOPENSSL_CONFEnvironment nicht gesetzt
Weiter zu
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional