cyphersec A blog about Web Application Security and .NET development best practices

5Aug/070

[Security 35] .NET | Firme Digitali (Introduzione)

Le firme digitali vengono utilizzate per "firmare" un messaggio aggiungendo uno strato di dati denominato firma. Utilizzando le firma digitali, il destinatario può verificare l'integrità del messaggio utilizzando specifiche funzioni di verifica. Gli algoritmi che supportano le firme digitali sono definiti "Algoritmi a Firma Digitale". Una firma digitale è specifica per ogni messaggio / documento.

Quale è il vantaggio di utilizzare le firme digitali? Beh la risposta a questa domanda è abbastanza semplice. Se il mittente utilizza le firme digitali per inviare informazioni, il destinatario può essere sicuro che il contenuto del messaggio non sia stato alterato da terze parti durante il suo viaggio.

La figura che segue ne illustra il funzionamento

Al momento della creazione del messaggio, il mittente (colui che crea il messaggio), crea una coppia chiavi. Il processo di firma del messaggio crea a tutti gli effetti un insieme di dati che verranno spediti insieme al messaggio al destinatario Bob.

Al fine di accellerare il processo, Alice (mittente) non firma l'intero messaggio ma :

  • Crea il messaggio
  • Genera il codice Hash del messaggio
  • Firma il codice Hash ottenuto

Un altro vantaggio derivato dall'utilizzo delle firme digitali è la possibilità di avere differenti firme di più persone. Come una sorta di contratto n persone possono firmare una informazione al fine di approvare il contenuto dello stesso. Questo è possibile attraverso una serie di step che riporto qui di seguito

  • Alice e Bob accettano e firmano il messaggio (contratto)
  • Alice crea l hash code del messaggio e lo firma con la sua chiave privata
  • Bob crea l hash code del messaggio e lo firma con la sua chiave privata
  • Alice controlla se Bob ha usato il codice di hash corretto e verifica la firma utilizzando la chiave pubblica di Bob.
  • BoB controlla se Alice ha usato il codice di hash corretto e verifica la firma utilizzando la chiave pubblica di Alice.

Seguire questi step può rivelarsi incredibilmente utile perchè permette ad entità di terze parti di verificare le firme delle parti interessate utilizzando le loro chiavi pubbliche.

La sicurezza delle firme digitali

Le firme digitali hanno due obbiettivi:

  1. Sicurezza Crittografica
  2. Devono avere "security features" pari o superiori alle firme per come tutti le conosciamo. (documenti su carta)

Perchè le firme digitali possono essere considerate relativamente sicure?

  • Nel caso in cui il messaggio venga intercettato - (Sniffing) – colui che intercetta il messaggio non deve poter modificare il messaggio. Questa task può essere completata nel caso in cui l'attaccante sia in grado di replicare la firma del mittente.
  • Nessuno dovrebbe essere capace di utilizzare la firma del mittente in nessun altro messaggio.
  • Colui che ha intercettato il messaggio non può modificare il contenuto del messaggio originale. Questa sicurezza è data dal fatto che : modificando il messaggio originale, la firma originale non corrisponderà al messaggio stesso.
  • Il mittente non può firmare e successivamente negare il fatto di aver firmato il messaggio originale. Solo il mittente può utilizzare la sua chiave privata. A rigor di logica nessun altro può aver firmato.

Follow Up : [Security 36] .NET | Firme Digitali (Creazione)

About Alessio Marziali

Alessio Marziali (MCTS) is a Security Consultant with 10 years of experience developing secure applications with Microsoft .NET in a variety of sectors in UK and Italy. Published technical author with two ASP.NET books currently available for purchase and OWASP Code Crawler Project Leader.
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


No trackbacks yet.