Inhaltsverzeichnis
4.3 Validacija FIPS načina
Ta stran prikazuje, kako validirate FIPS način vaše namestitve OpenSSL.
Preverjanje FIPS Provider
$openssl = "D:\Projects\openssl-3.6.0\bin\bin\openssl.exe" # Nastavitev okoljske spremenljivke $env:OPENSSL_CONF = "D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf" # Izpis ponudnikov & $openssl list -providers
S FIPS aktivnim:
Providers:
base
name: OpenSSL Base Provider
version: 3.6.0
status: active
fips
name: OpenSSL FIPS Provider
version: 3.6.0
status: active
Brez FIPS:
Providers:
default
name: OpenSSL Default Provider
version: 3.6.0
status: active
Preverjanje FIPS algoritmov
V FIPS načinu so na voljo samo certificirani algoritmi.
Dovoljeni algoritmi zgoščevanja
& $openssl list -digest-algorithms
FIPS-dovoljeno:
- SHA-256, SHA-384, SHA-512
- SHA3-256, SHA3-384, SHA3-512
- SHAKE128, SHAKE256
Ni FIPS-dovoljeno:
- ~~MD5~~
- ~~SHA1~~ (samo za združljivost)
- ~~MD4~~
Dovoljeni podpisni algoritmi
& $openssl list -signature-algorithms
FIPS-dovoljeno:
- RSA (≥2048 bit)
- ECDSA (P-256, P-384, P-521)
- ML-DSA-44, ML-DSA-65, ML-DSA-87
FIPS samotesti
FIPS Provider ob nalaganju izvede samoteste:
# Verbose način za izpis samotestov $env:OPENSSL_FIPS_TEST = "1" & $openssl list -providers
Ob neuspelih samotestih se FIPS Provider ne aktivira!
Preverjanje integritete FIPS modula
FIPS moduli imajo vgrajeno zgoščeno vrednost za preverjanje integritete:
# Generiranje/preverjanje zgoščene vrednosti FIPS modula & $openssl fipsinstall -verify -module "D:\Projects\openssl-3.6.0\bin\lib\ossl-modules\fips.dll" -in "D:\Projects\openssl-3.6.0\bin\ssl\fipsmodule.cnf"
Pričakovani izpis:
VERIFY PASSED
Ob napaki:
VERIFY FAILED
Če VERIFY FAILED: DLL je bila morda spremenjena. Ponovno zgradite!
Test: Ne-FIPS algoritem blokiran
V FIPS načinu bi moral biti MD5 blokiran:
# MD5 bi moral spodleteti & $openssl dgst -md5 test.txt 2>&1
Pričakovani izpis (s FIPS):
Error setting digest xxxx:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported
Če MD5 deluje, FIPS ni aktiven!
Preverjanje FIPS lastnosti v kodi
V C ali .NET lahko programsko preverite FIPS:
// C# P/Invoke primer [DllImport("libcrypto-3-x64.dll")] private static extern int OSSL_PROVIDER_available(IntPtr libctx, string name); public static bool IsFipsAvailable() { return OSSL_PROVIDER_available(IntPtr.Zero, "fips") == 1; }
Kontrolni seznam za FIPS skladnost
| # | Kontrolna točka | Status |
| — | —————– | ——– |
| 1 | enable-fips uporabljen pri gradnji | ☐ |
| 2 | fips.dll prisoten v ossl-modules/ | ☐ |
| 3 | fipsmodule.cnf generiran | ☐ |
| 4 | openssl.cnf FIPS Provider aktiviran | ☐ |
| 5 | openssl list -providers prikazuje FIPS aktiven | ☐ |
| 6 | fipsinstall -verify PASSED | ☐ |
| 7 | MD5 blokiran (test) | ☐ |
Odprava težav
"FIPS provider not available"
- Ali je bilo grajeno z
enable-fips? - Ali je
fips.dllprisoten? - Ali je
openssl.cnfpravilno konfiguriran?
"Self test failed"
- Ponovno namestite module:
nmake install_fips - Ponovno generirajte zgoščeno vrednost:
openssl fipsinstall …
MD5 deluje (bi moral biti blokiran)
default_properties = fips=yesmanjka v openssl.cnf- Okoljska spremenljivka
OPENSSL_CONFni nastavljena
Naprej na
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: dne 15.12.2025 ob 21:18