:: DSS/DSA ::
Torna alla pagina di 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 e sulla funzione hash SHA.
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 Zp* (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