====== 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.dll'' prisoten?
- Ali je ''openssl.cnf'' pravilno 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=yes'' manjka v openssl.cnf
- Okoljska spremenljivka ''OPENSSL_CONF'' ni nastavljena
----
===== Naprej na =====
* [[wvds:sl:openssl:build:windows-fips|FIPS gradnja]]
* [[wvds:sl:openssl:integration:start|5. Integracija]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//