Qual è la differenza tra DSA e RSA?


Risposte:


27

Riferendosi, https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian-sec-2006/less19.html

La
crittografia e la decrittografia RSA RSA sono commutative,
quindi possono essere utilizzate direttamente come schema di firma digitale
dato uno schema RSA {(e, R), (d, p, q)}
per firmare un messaggio M, calcolare:
S = M power d (mod R)
per verificare una firma, calcolare:
M = S power e (mod R) = M power ed (mod R) = M (mod R)

RSA può essere utilizzato sia per la crittografia che per le firme digitali, semplicemente invertendo l'ordine in cui vengono utilizzati gli esponenti: l'esponente segreto (d) per creare la firma, l'esponente pubblico (e) per chiunque possa verificare la firma. Tutto il resto è identico.

DSA (Digital Signature Algorithm)
DSA è una variante degli algoritmi ElGamal e Schnorr crea una firma a 320 bit, ma con la sicurezza di 512-1024 bit la sicurezza si basa ancora una volta sulla difficoltà di calcolare logaritmi discreti è stata ampiamente accettata

Generazione di chiavi DSA
condivisa in primo luogo pubblico globale vengono scelti i valori chiave (p, q, g):
scegli un primo grande p = 2 potenza L
dove L = da 512 a 1024 bit ed è un multiplo di 64
scegli q, un fattore primo di 160 bit di p-1
scegli g = h power (p-1) / q
per ogni h1
quindi ogni utente sceglie una chiave privata e calcola la propria chiave pubblica:
scegli x calcola y = g power x (mod p)

La generazione di chiavi DSA è correlata, ma in qualche modo più complessa di El Gamal. Principalmente a causa dell'uso del modulo secondario a 160 bit q utilizzato per velocizzare i calcoli e ridurre la dimensione della firma risultante.

Creazione e verifica della firma DSA

per firmare un messaggio M
generare una chiave di firma casuale k, k calcolare
r = (g power k (mod p)) (mod q)
s = k-1.SHA (M) + xr (mod q)
inviare firma (r, s) con messaggio

per verificare una firma, calcolare:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g power u1.y power u2 (mod p)) (mod q)
se v = r allora la firma è verificata

La creazione della firma è di nuovo simile a ElGamal con l'uso di una chiave di firma temporanea per messaggio k, ma facendo calc prima mod p, poi mod q per ridurre la dimensione del risultato. Nota che l'uso della funzione hash SHA è esplicito qui. La verifica consiste anche nel confrontare due calcoli, ancora una volta un po 'più complessi di, ma relativi a El Gamal.
Notare che quasi tutti i calcoli sono mod q e quindi sono molto più veloci.
Ma, a differenza di RSA, DSA può essere utilizzato solo per le firme digitali

Sicurezza DSA
La presenza di un canale subliminale esiste in molti schemi (ognuno che necessita di un numero casuale per essere scelto), non solo DSA. Sottolinea la necessità di "sicurezza del sistema", non solo un buon algoritmo.


il collegamento al tuo riferimento è interrotto
Paul Wintz

82

Controlla la risposta di AVA di seguito .

La mia vecchia risposta sembra sbagliata


Quindi questo significa che se la quantità di dati da crittografare è grande, verrà eseguito più velocemente utilizzando RSA?
WilliamKF

2
No, il contrario. DSA è più veloce nella firma (che è matematicamente più o meno uguale alla crittografia), quindi se devi crittografare molto e decrittografare spesso, DSA è più veloce.
Henri

Molti dati da crittografare sul lato client, ma vengono decrittografati solo una volta sul server, quindi DSA vince ancora?
WilliamKF

30
DSA non crittografa. Ripeto, DSA non crittografa. Ecco un quiz: cosa significa la "S" nei DSA?
Presidente James K. Polk

4
La capacità di @GregS RSA di crittografare rispetto a DSA che non è in grado di crittografare è principalmente un problema di terminologia. Chiamiamo diversi algoritmi RSA, alcuni dei quali firmano (es. RSA-PSS), alcuni dei quali crittografano (es. RSA-OAEP). Ma abbiamo dato a ogni algoritmo nella crittografia basata sul gruppo un nome diverso, chiamando uno degli algoritmi di crittografia ElGamal encryption e chiamando uno degli algoritmi di firma DSA.
CodesInChaos

24

A proposito, non puoi crittografare con DSA, solo firmare. Sebbene siano matematicamente equivalenti (più o meno) non è possibile utilizzare in pratica DSA come schema di crittografia, ma solo come schema di firma digitale.


20

Con riferimento a man ssh-keygen, la lunghezza di una chiave DSA è limitata esattamente a 1024 bit per rimanere conforme a FIPS 186-2 del NIST. Tuttavia, sono teoricamente possibili chiavi DSA più lunghe; FIPS 186-3 li consente esplicitamente. Inoltre, la sicurezza non è più garantita con chiavi RSA o DSA lunghe 1024 bit.

In conclusione, una chiave RSA a 2048 bit è attualmente la scelta migliore.

ALTRE PRECAUZIONI DA PRENDERE

Stabilire una connessione SSH sicura implica molto di più che selezionare una tecnologia di coppia di chiavi di crittografia sicura. Alla luce delle rivelazioni alla NSA di Edward Snowden, bisogna essere ancora più vigili di quanto precedentemente ritenuto sufficiente.

Per citare solo un esempio, è altrettanto importante utilizzare un algoritmo di scambio di chiavi sicuro . Ecco una bella panoramica delle attuali migliori pratiche di hardening SSH .


Alcune versioni precedenti di ssh-keygenconsentono anche altre chiavi di dimensioni di bit (io stesso uso una chiave DSA a 2048 bit generata utilizzando ssh-keygenRHEL).
Samveen

6

E oltre alle belle risposte di cui sopra.

  • DSA utilizza il logaritmo discreto.
  • RSA utilizza la fattorizzazione di numeri interi.

RSA sta per Ron R ivest, Adi S hamir e Leonard A dleman.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.