Perché le firme digitali utilizzano algoritmi come DSA, ECDSA o RSA-PSS e non solo l'algoritmo RSA per crittografare l'hash del messaggio con la chiave privata? La scelta è più sicurezza o prestazioni correlate e come?
Perché le firme digitali utilizzano algoritmi come DSA, ECDSA o RSA-PSS e non solo l'algoritmo RSA per crittografare l'hash del messaggio con la chiave privata? La scelta è più sicurezza o prestazioni correlate e come?
Quando usi direttamente una primitiva matematica, è spesso vulnerabile alle relazioni matematiche. L'operazione di aumento della potenza di $ d $ -or- $ e $ -modulo- $ n $ (talvolta chiamata "textbook RSA" o "plain RSA") ha una struttura matematica semplice, quindi è facile da trovare alcune delle trasformazioni che consente. Ad esempio, supponiamo che tu sappia che la firma del messaggio $ M_1 $ è $ S_1 $ e che la firma di $ M_2 $ è $ S_2 $. Quindi la firma di $ M_1 \ cdot M_2 $ è $ S_1 \ cdot S_2 $, perché $ S_1 S_2 = M_1 ^ d M_2 ^ d = (M_1 M_2) ^ d $ (tutte le uguaglianze sono $ \ mod n $). È possibile creare una firma senza conoscere la chiave privata. Questo è male. E questo è solo un esempio .
Costruzioni come PSS e PKCS # 1 v1.5 che precedono, evitano questo tipo di relazioni matematiche. Hanno codificato ogni messaggio in modo tale che non ci sia una semplice trasformazione aritmetica tra i messaggi codificati validi. PKCS # 1 v1.5 esegue il riempimento del messaggio. Ad esempio, evita l'attacco di cui sopra perché $ \ mathrm {pad} (M_1) \ cdot \ mathrm {pad} (M_2) $ non è un messaggio riempito valido, quindi $ S_1 \ cdot S_2 $ non è la firma di nulla. PSS lo fa in un modo più complesso mascherando il messaggio e quindi riempendo il risultato.
Quindi tra la semplice RSA e gli schemi di firma RSASSA-PKCS1-v1_5 e RSASSA-PSS, la differenza è la sicurezza. Semplice RSA come schema di firma ha molti buchi di sicurezza, mentre RSASSA-PKCS1-v1_5 e RSASSA-PSS sono entrambi considerati sicuri oggi. Ci sono motivi per preferire PSS: il padding v1.5 ha problemi noti per la crittografia e c'è il rischio che qualcuno trovi un modo per adattare l'attacco alle firme. Anche la firma v1.5 è difficile da implementare correttamente e anche dopo due decenni, alcune implementazioni non sono corrette ; PSS ha meno sottigliezze.
Tra RSA-PSS, DSA e ECDSA, non vi è alcun motivo di sicurezza particolare per sceglierne uno rispetto all'altro. Si tratta principalmente di prestazioni e facilità di implementazione. DSA è più lento; è emerso quando c'erano dubbi sui brevetti che potrebbero applicarsi alla RSA, ma quei brevetti sono scaduti e la DSA si sta estinguendo. La maggior parte dei nuovi protocolli favorisce l'ECDSA (o la variante più recente EdDSA). Le chiavi e le firme ECDSA sono più piccole di RSA, che è importante per i dispositivi embedded e per i protocolli di comunicazione a banda ultra-bassa. La firma ECDSA è anche significativamente più veloce della firma RSA, ma la verifica è leggermente più veloce con RSA.
Come ha detto Kyoto, la maggior parte si riduce alla preferenza con alcuni algoritmi che sono più veloci di altri.
Oltre a ciò, dovresti sapere che il più comunemente usato (RSA) è vulnerabile al Quantum Computing. Ciò significa che altri algoritmi da sostituire sono stati esaminati, ma finora non sembra esserci uno che abbiamo trovato / creato in grado di sostituire RSA pur mantenendo la velocità di decrittazione / crittografia / generazione di chiavi e mantenendo le dimensioni di l'uscita bassa. Questo non è un problema grave per le firme digitali come lo è per l'implementazione di TLS, dove ogni byte inviato conta e aumenta la quantità di lavoro che il server deve fare.
Leggi altre domande sui tag authentication digital-signature public-key-infrastructure certificates rsa