====== 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-fips'' gebaut?
- Ist ''fips.dll'' vorhanden?
- Ist ''openssl.cnf'' korrekt konfiguriert?
==== "Self test failed" ====
- Module neu installieren: ''nmake install_fips''
- Hash neu generieren: ''openssl fipsinstall ...''
==== MD5 funktioniert (sollte blockiert sein) ====
- ''default_properties = fips=yes'' in openssl.cnf fehlt
- ''OPENSSL_CONF'' Environment nicht gesetzt
----
===== Weiter zu =====
* [[.:build:windows-fips|FIPS Build]]
* [[.:integration:start|5. Integration]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//