4. Security Considerations (Considerazioni sulla Sicurezza)
4. Security Considerations (Considerazioni sulla Sicurezza)
La corretta implementazione e utilizzo di un algoritmo di firma crittografica richiedono di tenere in considerazione molti parametri. In particolare, la generazione, la memorizzazione, il controllo degli accessi e lo smaltimento della chiave privata sono operazioni sensibili, che questo documento non affronta in alcun modo. (EC)DSA deterministico mostra come ottenere le caratteristiche di sicurezza di uno schema di firma DSA o ECDSA standard rimuovendo la necessità di una fonte di casualità forte, o addirittura di qualsiasi fonte di casualità, durante la generazione della firma.
La generazione della chiave privata, tuttavia, richiede assolutamente una tale fonte fortemente casuale. In situazioni in cui (EC)DSA deterministico deve essere utilizzato a causa della mancanza di una fonte appropriata di casualità, si DEVE assumere che la chiave privata sia stata generata esternamente e importata nel sistema di generazione della firma o sia stata generata in un contesto in cui la casualità era disponibile. Ad esempio, si può immaginare una smartcard che genera la sua chiave privata mentre è ancora in fabbrica in condizioni ambientali controllate, ma per la quale la generazione di dati casuali non può essere garantita una volta deployata sul campo, quando è fisicamente nelle mani di potenziali attaccanti.
Sia la rimozione del requisito di fonte casuale che la capacità di testare un'implementazione rispetto ai vettori di test migliorano la sicurezza delle implementazioni di firmatari DSA ed ECDSA, in quanto aiutano a evitare condizioni di fallimento difficili da testare. Gli schemi di firma deterministici possono anche aiutare in altre situazioni, ad esempio, per evitare duplicati spurii, quando lo stesso elemento di dati viene firmato più volte con la stessa chiave: con uno schema di firma deterministico, viene generata la stessa firma ogni volta, rendendo molto più facile il rilevamento dei duplicati.
Al contrario, la mancanza di randomizzazione può avere effetti negativi in alcuni protocolli avanzati, ad esempio, relativi all'anonimato in alcuni schemi di voto. Come regola generale, DSA o ECDSA deterministico può essere utilizzato al posto del genuino DSA o ECDSA, senza problemi di sicurezza aggiuntivi, se il protocollo complessivo tollererebbe un altro schema di firma deterministico, in particolare RSA come specificato in PKCS #1 [RFC3447] (con padding "type 1", non PSS) o ISO 9796-2 [ISO-9796-2]. L'elenco dei protocolli in cui DSA o ECDSA deterministico è appropriato include Transport Layer Security (TLS) [RFC5246], il Secure SHell (SSH) Protocol [RFC4251], Cryptographic Message Syntax (CMS) [RFC5652] e derivati, infrastrutture a chiave pubblica X.509 [RFC5280], e molti altri.
La costruzione descritta in questo documento è nota come "derandomizzazione". Questo è stato proposto per vari schemi di firma. La sicurezza si basa sul fatto che la generazione di k sia indistinguibile dall'output di un oracolo casuale. In termini approssimativi, HMAC_DRBG è sicuro in quel ruolo finché HMAC si comporta come una PRF (Funzione Pseudocasuale). Per dettagli sulla sicurezza di HMAC e HMAC_DRBG, si prega di fare riferimento a [H2008] e [B2006]. Per un trattamento più formale della derandomizzazione, vedere [LN2009].
Un problema residuo con (EC)DSA deterministico, come presentato in questo documento, è il "doppio uso" della chiave privata x, sia come chiave privata nell'algoritmo di generazione della firma stesso sia come input per l'oracolo pseudocasuale basato su HMAC_DRBG per produrre il valore k. Questo richiede che HMAC_DRBG continui a essere un oracolo casuale, anche quando la chiave pubblica (che è calcolata da x) è anch'essa nota. Data la mancanza di struttura comune tra HMAC e logaritmi discreti, questa sembra un'assunzione ragionevole.
Gli attacchi side-channel sono una considerazione importante ogni volta che un attaccante può misurare accuratamente aspetti di un'implementazione come la quantità di tempo necessaria per eseguire un'operazione di firma o l'energia consumata in ogni punto di un'operazione di firma. Il determinismo degli algoritmi descritti in questa nota può essere utile a un attaccante in alcune forme di attacchi side-channel, quindi le implementazioni DOVREBBERO utilizzare misure difensive per evitare di far trapelare la chiave privata attraverso un canale laterale.