====== 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//