1. Introduction (Introduzione)
1. Introduction (Introduzione)
DSA [FIPS-186-4] ed ECDSA [X9.62] sono due schemi di firma digitale standard. Forniscono integrità dei dati e autenticità verificabile in vari protocolli.
Una caratteristica di DSA ed ECDSA è che devono produrre, per ogni generazione di firma, un valore casuale fresco (di seguito designato come k). Per una sicurezza efficace, k DEVE essere scelto casualmente e uniformemente da un insieme di interi modulari, utilizzando un processo crittograficamente sicuro. Anche lievi distorsioni in quel processo possono essere trasformate in attacchi agli schemi di firma.
La necessità di una fonte di casualità crittograficamente sicura si dimostra essere un ostacolo al deployment degli schemi di firma DSA ed ECDSA in alcune architetture in cui la generazione di numeri casuali sicuri è impegnativa, in particolare, sistemi embedded come le smartcard. In quei sistemi, l'algoritmo di firma RSA, utilizzato come specificato in Public-Key Cryptography Standards (PKCS) #1 [RFC3447] (con padding "type 1", non il Probabilistic Signature Scheme (PSS)) e ISO 9796-2 [ISO-9796-2], è spesso preferito, anche se è computazionalmente più costoso, perché RSA (con tali schemi di padding) è deterministico e quindi non richiede una fonte di casualità.
La natura randomizzata di DSA ed ECDSA rende anche le implementazioni più difficili da testare. I test automatici non possono rilevare in modo affidabile se l'implementazione utilizza una fonte di casualità di qualità sufficientemente alta. Questo rende il processo di implementazione più vulnerabile a fallimenti catastrofici, spesso scoperti dopo che il sistema è stato deployato e attaccato con successo.
È possibile trasformare DSA ed ECDSA in schemi deterministici utilizzando un processo deterministico per generare il valore "casuale" k. Quel processo DEVE soddisfare alcune caratteristiche crittografiche al fine di mantenere le proprietà di verificabilità e non falsificabilità attese dagli schemi di firma; vale a dire, per chiunque non conosca la chiave privata di firma, la mappatura dai messaggi di input ai valori k corrispondenti DEVE essere computazionalmente indistinguibile da ciò che una funzione scelta casualmente e uniformemente (dall'insieme dei messaggi all'insieme dei possibili valori k) restituirebbe.
Questo documento descrive tale procedura. Ha le seguenti caratteristiche:
-
Le firme prodotte rimangono completamente compatibili con DSA ed ECDSA standard. Le entità che verificano le firme non necessitano di essere modificate o addirittura di essere a conoscenza del processo utilizzato per generare k.
-
La generazione della coppia di chiavi non è alterata. Le chiavi private esistenti possono essere utilizzate con DSA ed ECDSA deterministici.
-
L'utilizzo di DSA ed ECDSA deterministici non implica alcun requisito di memorizzazione aggiuntivo di alcun valore segreto o pubblico.
-
DSA ed ECDSA deterministici possono essere applicati sugli stessi input di DSA ed ECDSA standard, vale a dire un valore hash calcolato sul messaggio che deve essere firmato, con una funzione hash crittograficamente sicura.
Alcune scelte relativamente arbitrarie sono state prese nella definizione di (EC)DSA deterministico come specificato in questo documento; questo è stato fatto al fine di renderlo il più universalmente applicabile possibile, in modo da massimizzare l'utilità dei vettori di test inclusi. Vedere la Sezione 3.6 per una discussione di alcune possibili varianti.
Va notato che la generazione della coppia di chiavi richiede ancora una fonte di casualità. Nei sistemi embedded dove la qualità della casualità è un problema, può spesso essere organizzato che la generazione della coppia di chiavi avvenga in condizioni più controllate (ad esempio, durante una procedura speciale di inizializzazione della smartcard o sotto il controllo fisico di agenti giurati) o la chiave potrebbe anche essere generata altrove e importata nel dispositivo. DSA ed ECDSA deterministici si occupano solo della necessità di casualità al momento della generazione della firma.