====== 3.2 Configurazione ======
Opzioni di configurazione per l'infrastruttura crittografica PQ.
----
===== Variabili d'ambiente =====
^ Variabile ^ Descrizione ^ Esempio ^ Priorita ^
| ''OPENSSL_PATH'' | Percorso ai binari OpenSSL | ''C:\OpenSSL\bin'' | Alta |
| ''WVDS_CRYPTO_MODE'' | Modalita crittografica predefinita | ''Hybrid'' | Media |
| ''WVDS_PQ_KEYSTORE'' | Percorso allo storage chiavi PQ | ''%LOCALAPPDATA%\WvdS.Crypto\PqKeys'' | Opzionale |
==== Windows (PowerShell come amministratore) ====
# Permanente per tutti gli utenti (Machine-Scope)
[Environment]::SetEnvironmentVariable("OPENSSL_PATH", "C:\Program Files\OpenSSL\bin", "Machine")
[Environment]::SetEnvironmentVariable("WVDS_CRYPTO_MODE", "Hybrid", "Machine")
# Verificare (aprire nuova PowerShell)
$env:OPENSSL_PATH
$env:WVDS_CRYPTO_MODE
==== Linux ====
# A livello di sistema (/etc/profile.d/)
sudo tee /etc/profile.d/wvds-crypto.sh << 'EOF'
export OPENSSL_PATH=/usr/local/openssl/lib
export WVDS_CRYPTO_MODE=Hybrid
EOF
# Per l'utente corrente (~/.bashrc o ~/.profile)
echo 'export OPENSSL_PATH=/usr/local/openssl/lib' >> ~/.bashrc
echo 'export WVDS_CRYPTO_MODE=Hybrid' >> ~/.bashrc
# Attivare
source ~/.bashrc
# Verificare
echo $OPENSSL_PATH
echo $WVDS_CRYPTO_MODE
==== macOS ====
# In ~/.zshrc (shell predefinita su macOS)
echo 'export OPENSSL_PATH=$(brew --prefix openssl@3)/lib' >> ~/.zshrc
echo 'export WVDS_CRYPTO_MODE=Hybrid' >> ~/.zshrc
source ~/.zshrc
----
===== Modalita crittografiche =====
^ Modalita ^ Descrizione ^ Utilizzo ^
| ''Classic'' | Solo RSA/ECDSA | Sistemi legacy, retrocompatibilita |
| ''Hybrid'' | RSA + ML-DSA in parallelo | **Raccomandato** per la migrazione |
| ''PostQuantum'' | Solo ML-DSA/ML-KEM | Nuovi sistemi solo PQ |
**Raccomandazione:** Utilizzare ''Hybrid'' durante la fase di transizione. Questo offre sicurezza anche se un algoritmo viene compromesso.
----
===== Storage chiavi PQ =====
Il Windows Certificate Store non supporta chiavi PQ native. La libreria utilizza un Side-Store separato:
**Percorsi predefiniti:**
^ OS ^ Percorso ^
| Windows | ''%LOCALAPPDATA%\WvdS.Crypto\PqKeys\'' |
| Linux | ''~/.local/share/wvds-crypto/pqkeys/'' |
| macOS | ''~/Library/Application Support/WvdS.Crypto/PqKeys/'' |
==== Verificare i permessi ====
**Windows (PowerShell):**
# Determinare percorso
$pqKeyStore = "$env:LOCALAPPDATA\WvdS.Crypto\PqKeys"
# Verificare esistenza
Test-Path $pqKeyStore
# Mostrare permessi
Get-Acl $pqKeyStore | Format-List
# Impostare permessi (solo utente corrente)
icacls $pqKeyStore /inheritance:r /grant:r "$env:USERNAME:(OI)(CI)F"
**Linux:**
# Percorso
PQ_KEYSTORE=~/.local/share/wvds-crypto/pqkeys
# Verificare esistenza
ls -la $PQ_KEYSTORE
# Impostare permessi (solo proprietario lettura/scrittura)
chmod 700 $PQ_KEYSTORE
chmod 600 $PQ_KEYSTORE/*
# Verificare
stat $PQ_KEYSTORE
**Importante:** Lo storage chiavi PQ **non** e incluso nel backup del Windows Certificate Store!
Eseguire il backup di questa cartella separatamente.
----
===== Modalita FIPS (OpenSSL) =====
Per la conformita FIPS 140-3 deve essere attivato l'OpenSSL FIPS Provider.
==== Verificare stato FIPS Provider ====
# Elencare provider
openssl list -providers
# Output atteso con FIPS:
# Providers:
# default
# fips
==== Attivare FIPS Provider ====
**Configurare openssl.cnf:**
# Determinare percorso configurazione OpenSSL
openssl version -d
# Output: OPENSSLDIR: "/usr/local/openssl"
# Modificare configurazione
sudo nano /usr/local/openssl/openssl.cnf
**Voci richieste in openssl.cnf:**
# All'inizio del file
openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
[provider_sect]
fips = fips_sect
base = base_sect
default = default_sect
[fips_sect]
activate = 1
[base_sect]
activate = 1
[default_sect]
activate = 1
**Verifica:**
# Verificare stato FIPS
openssl list -providers | grep -i fips
# Algoritmi validati FIPS
openssl list -signature-algorithms -provider fips
----
===== Configurazione algoritmi =====
**Varianti ML-DSA disponibili (firme):**
^ Algoritmo ^ Livello NIST ^ Chiave pubblica ^ Firma ^ Raccomandazione ^
| ML-DSA-44 | Livello 2 | 1.312 B | 2.420 B | Sistemi con risorse limitate |
| ML-DSA-65 | Livello 3 | 1.952 B | 3.309 B | **Standard (raccomandato)** |
| ML-DSA-87 | Livello 5 | 2.592 B | 4.627 B | Massima sicurezza |
**Varianti ML-KEM disponibili (scambio chiavi):**
^ Algoritmo ^ Livello NIST ^ Chiave pubblica ^ Ciphertext ^ Shared Secret ^
| ML-KEM-512 | Livello 1 | 800 B | 768 B | 32 B |
| ML-KEM-768 | Livello 3 | 1.184 B | 1.088 B | 32 B |
| ML-KEM-1024 | Livello 5 | 1.568 B | 1.568 B | 32 B |
**Verificare supporto algoritmi:**
# Tutti gli algoritmi di firma disponibili
openssl list -signature-algorithms
# ML-DSA specifico
openssl list -signature-algorithms | grep -i "ml-dsa"
# Tutti gli algoritmi KEM
openssl list -kem-algorithms
# ML-KEM specifico
openssl list -kem-algorithms | grep -i "ml-kem"
----
===== Approfondimenti =====
* [[.:betrieb|Operazioni]] – Health Check, certificati via CLI
* [[.:troubleshooting|Troubleshooting]] – Errori di configurazione
* [[..:konzepte:algorithmen|Algoritmi]] – Dettagli tecnici
* [[..:api:cryptoconfig|CryptoConfig API]] – Per sviluppatori
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>konfiguration umgebungsvariablen fips openssl}}