Cos’è la firma digitale
La firma digitale è un metodo matematico volto a dimostrare l’autenticità di un messaggio o di un documento digitale inviato tra mittente e destinatario attraverso un canale di comunicazione non sicuro, garantendo al destinatario che:
- il mittente del messaggio sia chi dice di essere (autenticazione),
- il mittente non possa negare di averlo inviato (non rifiuto)
- il messaggio non sia stato alterato lungo il percorso dal mittente al destinatario (integrità).
Le firme digitali si basano su schemi o protocolli crittografici comunemente usati nella distribuzioni di software, nelle transazioni finanziarie e in altri casi in cui si debba rilevare la falsificazione o l’alterazione del messaggio.
Un tipico schema di firma elettronica basata sulla crittografia a chiave pubblica si compone dei seguenti algoritmi:
– un algoritmo per la generazione della chiave, che seleziona in modo casuale una chiave privata da un insieme di possibili valori, e restituisce una coppia di chiavi, la chiave privata con cui si firma il documento e la corrispondente chiave pubblica di verifica della firma;
– un algoritmo di firma che, presi in input un messaggio e la chiave privata, calcola il codice hash del messaggio e lo crittografa con la chiave privata, producendo una firma;
– un algoritmo di verifica che, presi in input un messaggio, la chiave pubblica e la firma, accetta o rifiuta la firma che compare nel messaggio.
Sono richieste le seguenti due proprietà: primo, l’autenticità di una firma generata da un messaggio fisso e da una chiave privata deve essere verificata facendo uso della corrispondente chiave pubblica.
In secondo luogo, deve essere impossibile generare una firma valida per un messaggio senza avere a disposizione la chiave privata.
Di regola uno schema di firma digitale è una serie di algoritmi probabilistici in tempo polinomiale (G, S, V), dotati delle seguenti proprietà:
G (algoritmo generatore della chiave) genera una chiave pubblica, pk, e la corrispondente chiave privata, sk, a partire dal valore in input 1n, dove n è il parametro di sicurezza;
S (algoritmo di firma) restituisce un tag t, elaborando in input la chiave privata sk e una stringa x;
V (algoritmo di verifica) valuta i valori dati in input (la chiave pubblica pk, la stringa x e il tag t), determinando se la firma sia autentica o meno.
Ciò al fine di garantire la sicurezza massima.
Discussione