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"

  1. Ali je bilo grajeno z enable-fips?
  2. Ali je fips.dll prisoten?
  3. Ali je openssl.cnf pravilno konfiguriran?

"Self test failed"

  1. Ponovno namestite module: nmake install_fips
  2. Ponovno generirajte zgoščeno vrednost: openssl fipsinstall …

MD5 deluje (bi moral biti blokiran)

  1. default_properties = fips=yes manjka v openssl.cnf
  2. Okoljska spremenljivka OPENSSL_CONF ni 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