====== 3.2 Windows FIPS gradnja ====== Ta navodila razlagajo, kako prevesti OpenSSL s podporo za FIPS 140-3. ---- ===== Kaj je FIPS 140-3? ===== **FIPS 140-3** (Federal Information Processing Standard) je ameriški standard za kriptografske module. Definira: * Katere algoritme so dovoljeni * Kako morajo biti generirani ključi * Samotesti ob zagonu * Zaznavanje posegov **Kdo potrebuje FIPS?** | Panoga | FIPS potreben? | |--------|----------------| | Ameriške vladne agencije | **Da** | | EU vladne agencije | Pogosto (BSI priporoča) | | Banke | **Večinoma da** | | Zdravstvo | **Pogosto da** | | Interne aplikacije | Redko | ---- ===== Predpogoji ===== Poleg [[wvds:sl:openssl:vorbereitung:windows-tools|standardnih predpogojev]]: * ☑ NASM je **obvezen** (ni opcijsko!) * ☑ Čist imenik za gradnjo ---- ===== Koraki gradnje ===== ==== Korak 1: Priprava okolja ==== call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" set PATH=C:\Strawberry\perl\bin;%LOCALAPPDATA%\bin\NASM;%PATH% cd /d D:\Projects\openssl-3.6.0\src ==== Korak 2: Konfiguracija s FIPS ==== perl Configure VC-WIN64A enable-fips --prefix=D:\Projects\openssl-3.6.0\bin --openssldir=D:\Projects\openssl-3.6.0\bin\ssl **Pomembno:** Parameter ''enable-fips'' aktivira FIPS Provider. ==== Korak 3: Prevajanje ==== nmake ==== Korak 4: Namestitev (vključno s FIPS) ==== nmake install_sw install_fips ''install_fips'' namesti FIPS Provider in generira konfiguracijo modula! ---- ===== Rezultat ===== Poleg standardnih datotek: 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 # Konfiguracija FIPS modula ---- ===== Aktivacija FIPS ===== ==== Prilagoditev openssl.cnf ==== Odprite ''D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf'' in dodajte: # Na začetku datoteke 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 ==== Generiranje zgoščene vrednosti FIPS modula ==== Ob prvem zagonu je potrebno izračunati zgoščeno vrednost FIPS modula: cd D:\Projects\openssl-3.6.0\bin bin\openssl.exe fipsinstall -out ssl\fipsmodule.cnf -module lib\ossl-modules\fips.dll ---- ===== Preverjanje FIPS načina ===== set OPENSSL_CONF=D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf # Izpis ponudnikov openssl list -providers Pričakovani izpis: Providers: base name: OpenSSL Base Provider version: 3.6.0 status: active fips name: OpenSSL FIPS Provider version: 3.6.0 status: active ---- ===== Testiranje FIPS algoritmov ===== V FIPS načinu so dovoljeni samo določeni algoritmi: # Dovoljeni algoritmi zgoščevanja openssl list -digest-algorithms # Prikazati bi moralo: SHA256, SHA384, SHA512, SHA3-* # NE: MD5, SHA1 (v FIPS načinu onemogočeno) # Dovoljeni algoritmi podpisovanja openssl list -signature-algorithms # Prikazati bi moralo: RSA-PSS, ECDSA, ML-DSA ---- ===== Pomembne opombe ===== **FIPS skladnost je več kot samo gradnja!** Za pravo FIPS certifikacijo potrebujete: - OpenSSL FIPS-validirano različico (preverite seznam CMVP) - Pravilno konfiguracijo brez ne-FIPS algoritmov - Dokumentirano Key Ceremony - Varnostno politiko **Ne-FIPS algoritmi v FIPS načinu:** | Algoritem | FIPS status | |-----------|-------------| | MD5 | ❌ Ni dovoljeno | | SHA1 | ⚠️ Samo za združljivost | | DES | ❌ Ni dovoljeno | | 3DES | ⚠️ V opuščanju | | AES-GCM | ✅ Dovoljeno | | RSA ≥2048 | ✅ Dovoljeno | | ECDSA | ✅ Dovoljeno | | ML-DSA | ✅ Dovoljeno | | ML-KEM | ✅ Dovoljeno | ---- ===== Naprej na ===== * [[wvds:sl:openssl:testen:fips-validieren|Validacija FIPS načina]] * [[wvds:sl:openssl:testen:start|4. Testiranje]] * [[wvds:sl:openssl:build:start|Nazaj na pregled gradnje]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//