Inhaltsverzeichnis

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:

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


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:

  1. OpenSSL FIPS-validirano različico (preverite seznam CMVP)
  2. Pravilno konfiguracijo brez ne-FIPS algoritmov
  3. Dokumentirano Key Ceremony
  4. 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


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