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 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:

  1. OpenSSL FIPS-validierte Version (prüfen Sie die CMVP-Liste)
  2. Korrekte Konfiguration ohne nicht-FIPS-Algorithmen
  3. Dokumentierte Key Ceremony
  4. 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


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: den 29.01.2026 um 15:14