Uni.CrittoDSA History
Hide minor edits - Show changes to output
Changed line 7 from:
DSS sta per '''digital signature standard''', ed è uno standard per la firma digitale. DSA invece è l'algoritmo usato da DSS per realizzare la firma digitale. Si basa sull'intrattabilità dei [[logaritmi discreti -> CrittoElGamal]] e sulla [[funzione hash SHA -> CrittoHah]].
to:
DSS sta per '''digital signature standard''', ed è uno standard per la firma digitale. DSA invece è l'algoritmo usato da DSS per realizzare la firma digitale. Si basa sull'intrattabilità dei [[logaritmi discreti -> CrittoElGamal]] e sulla [[funzione hash SHA -> CrittoHash]].
Added lines 1-50:
(:title DSS/DSA:) %titolo%''':: DSS/DSA ::'''
[[Torna alla pagina di Crittografia -> Crittografia]]
!!Che cos'è DSS sta per '''digital signature standard''', ed è uno standard per la firma digitale. DSA invece è l'algoritmo usato da DSS per realizzare la firma digitale. Si basa sull'intrattabilità dei [[logaritmi discreti -> CrittoElGamal]] e sulla [[funzione hash SHA -> CrittoHah]].
!!Le firme digitali Le firme digitali devono comportarsi esattamente come le firme normali. Hanno le seguenti caratteristiche: * devono poter essere prodotte facilmente dal legittimo firmatario * nessuno deve essere in grado di falsificarle * chiunque invece può verificarle
!!Generazione parametri Devo scegliere: * '''p''' = un numero primo * '''q''' = un numero primo, tale che '''q | (p-1)''', ovvero '''q''' deve essere divisore di p-1 * '''α''' = il numero di ordine '''q''' in '''Z'_p_''^*^'''' (sotto vediamo che cos'è) * '''s''' = un numero casuale, '''s''' < '''q''' * '''β''' = '''α'^s^' mod p'''
Chiave privata: p, q, α, s\\ Chiave pubblica: p, q, α, β
!!!Ordine q modulo p Qui sopra abbiamo detto che α è di ordine q modulo p. Vuol dire "semplicemente" che '''α'^q^' = 1 mod p'''.
!!Firma Per firmare il messaggio M, Alice, che possiede la chiave privata, deve eseguire i seguenti passi: * genera un numero '''r''' casuale, con '''r''' in '''[1, q - 1]''' * '''γ''' = (α'^r^' mod p) mod q * '''δ''' = (SHA(M) + s*γ) * r'^-1^' mod q * invia il messaggio '''M''' assieme a '''γ''' e '''δ'''
Notiamo che '''r'^-1^'''' esiste, in mod q, perché q è primo e quindi il MCD(r, q) = 1.
!!Verifica Quando Bob riceve il messaggio con γ e δ, deve eseguire i seguenti passi per verificare: * '''e'''' = (SHA(M) * δ'^-1^) mod q * '''e''''' = (γ * δ'^-1) mod q
Poi, deve verificare la seguente uguaglianza: α'^e'^' * β'^e''^' = γ
Se l'uguaglianza è verificata, la firma è autentica. Altrimenti, la firma è falsa.
Come esercizio, potete provare che ciò funziona effettivamente:)
[[Torna alla pagina di Crittografia -> Crittografia]]
|