====== 3.2 Windows FIPS Build ====== Diese Anleitung erklärt, wie Sie OpenSSL mit FIPS 140-3 Unterstützung kompilieren. ---- ===== Was ist FIPS 140-3? ===== **FIPS 140-3** (Federal Information Processing Standard) ist ein US-amerikanischer Standard für kryptographische Module. Er definiert: * Welche Algorithmen erlaubt sind * Wie Schlüssel generiert werden müssen * Selbsttests beim Start * Tamper-Detection **Wer braucht FIPS?** | Branche | FIPS erforderlich? | |---------|-------------------| | US-Behörden | **Ja** | | EU-Behörden | Oft (BSI empfiehlt) | | Banken | **Meist ja** | | Gesundheitswesen | **Oft ja** | | Interne Apps | Selten | ---- ===== Voraussetzungen ===== Zusätzlich zu den [[.:vorbereitung:windows-tools|Standard-Voraussetzungen]]: * ☑ NASM ist **Pflicht** (nicht optional!) * ☑ Sauberes Build-Verzeichnis ---- ===== Build-Schritte ===== ==== Schritt 1: Umgebung vorbereiten ==== REM Pfad anpassen: Community, Professional oder Enterprise call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" set PATH=%STRAWBERRY_PERL%\bin;%LOCALAPPDATA%\bin\NASM;%PATH% cd /d %OPENSSL_SRC% ==== Schritt 2: Mit FIPS konfigurieren ==== perl Configure VC-WIN64A enable-fips --prefix=D:\Projects\openssl-3.6.0\bin --openssldir=D:\Projects\openssl-3.6.0\bin\ssl **Wichtig:** Der Parameter ''enable-fips'' aktiviert den FIPS-Provider. ==== Schritt 3: Kompilieren ==== nmake ==== Schritt 4: Installieren (inkl. FIPS) ==== nmake install_sw install_fips ''install_fips'' installiert den FIPS-Provider und generiert die Modul-Konfiguration! ---- ===== Ergebnis ===== Zusätzlich zu den Standard-Dateien: bin\ ├── bin\ │ ├── openssl.exe │ ├── libcrypto-3-x64.dll │ └── libssl-3-x64.dll ├── lib\ │ └── ossl-modules\ │ ├── fips.dll # FIPS Provider Modul │ └── legacy.dll └── ssl\ ├── openssl.cnf └── fipsmodule.cnf # FIPS Modul-Konfiguration ---- ===== FIPS aktivieren ===== ==== openssl.cnf anpassen ==== Öffnen Sie ''D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf'' und fügen Sie hinzu: # Am Anfang der Datei openssl_conf = openssl_init [openssl_init] providers = provider_sect alg_section = algorithm_sect [provider_sect] fips = fips_sect base = base_sect [fips_sect] activate = 1 [base_sect] activate = 1 [algorithm_sect] default_properties = fips=yes ==== FIPS-Modul-Hash generieren ==== Beim ersten Start muss der FIPS-Modul-Hash berechnet werden: cd D:\Projects\openssl-3.6.0\bin bin\openssl.exe fipsinstall -out ssl\fipsmodule.cnf -module lib\ossl-modules\fips.dll ---- ===== FIPS-Modus prüfen ===== set OPENSSL_CONF=D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf # Provider auflisten openssl list -providers Erwartete Ausgabe: Providers: base name: OpenSSL Base Provider version: 3.6.0 status: active fips name: OpenSSL FIPS Provider version: 3.6.0 status: active ---- ===== FIPS-Algorithmen testen ===== Im FIPS-Modus sind nur bestimmte Algorithmen erlaubt: # Erlaubte Hash-Algorithmen openssl list -digest-algorithms # Sollte zeigen: SHA256, SHA384, SHA512, SHA3-* # NICHT: MD5, SHA1 (im FIPS-Modus deaktiviert) # Erlaubte Signatur-Algorithmen openssl list -signature-algorithms # Sollte zeigen: RSA-PSS, ECDSA, ML-DSA ---- ===== Wichtige Hinweise ===== **FIPS-Compliance ist mehr als nur der Build!** Für echte FIPS-Zertifizierung benötigen Sie: - OpenSSL FIPS-validierte Version (prüfen Sie die CMVP-Liste) - Korrekte Konfiguration ohne nicht-FIPS-Algorithmen - Dokumentierte Key Ceremony - Security Policy **Nicht-FIPS-Algorithmen im FIPS-Modus:** | Algorithmus | FIPS-Status | |-------------|-------------| | MD5 | ❌ Nicht erlaubt | | SHA1 | ⚠️ Nur für Kompatibilität | | DES | ❌ Nicht erlaubt | | 3DES | ⚠️ Auslaufend | | AES-GCM | ✅ Erlaubt | | RSA ≥2048 | ✅ Erlaubt | | ECDSA | ✅ Erlaubt | | ML-DSA | ✅ Erlaubt | | ML-KEM | ✅ Erlaubt | ---- ===== Weiter zu ===== * [[.:testen:fips-validieren|FIPS-Modus validieren]] * [[.:testen:start|4. Testen]] * [[.:build:start|Zurück zur Build-Übersicht]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//