Cerca nel blog

Visualizzazione post con etichetta crittografia asimmetrica. Mostra tutti i post
Visualizzazione post con etichetta crittografia asimmetrica. Mostra tutti i post

giovedì 30 settembre 2010

Digital Signature

La digital signature o firma digitale è basata sulla crittografia asimmetrica, essa rappresenta un sistema per autenticare un documento digitale garantendo il non ripudio.
La firma digitale si propone di risolvere tre problemi:
  • Integrità, la garanzia che terze parti non abbiano modificato il contenuto del messaggio.
  • Non ripudio chi trasmette il messaggio non può negare di averlo fatto.
  • Autenticità, l’effettiva provenienza del mittente.
L’applicazione della firma digitale ad un messaggio avviene nei seguenti passi:

Passo 1
Al messaggio da inviare viene applicato un algoritmo di hash. Il risultato dell’applicazione dell’algoritmo ci da una sequenza composta da un numero fisso e univoco di bit chiamato MD(message digest).
Una funzione hash H deve alcune proprietà:

  1. Deve essere difficile da invertire(resistente). Sia H(x)=y Є {0,1}n per x Dato y dovrebbe essere difficile trovare un qualsiasi z tale che H(z)=y
  2. Resistente alla collisione:Dato x,y dovrebbe essere difficile che H(x)=H(y)

Le funzioni hash più comuni sono:
  • MD5 a 128-bit, non garantisce la non collisione.
  • RIPEMD a 160-bit, è una variante di MD5.
  • SHA-1 a 160-bit anche questo non garantisce la collisione violata nel 2005, comunque rimane ancora sicura la variante SHA-2 o non si è ancora a conoscenza di attacchi.
Passo 2
Il message digest viene cifrato con la chiave privata del mittente, ed il risultato di questa operazione rappresenta la firma digitale del messaggio.

Passo 3
Il messaggio originale o in chiaro e la relativa firma digitale vengono inviati al destinatario.


Il ricevente per verificare la firma digitale effettua i seguenti passi:

Passo 1
Applica al messaggio ricevuto la stesso algoritmo hash del mittente ottenendo il digest del messaggio.

Passo 2
Utilizzando la chiave pubblica del mittente decifra la firma digitale ottenendo il digest del messaggio.

Passo 3
Confronta i due digest ottenuti e se questi risultano essere uguali, sono garantite:
  • Autenticità
  • Integrità




Gli algoritmi più comuni sono:
  • MD2/RSA
  • MD5/RSA
  • SHA1/DSA
  • SHA2/DSA

mercoledì 29 settembre 2010

Crittografia a chiave pubblica

La crittografia a chiave pubblica o asimmetrica si basa sull’uso di una coppie di chiavi:

K=(K+,K-) 

La chiave pubblica K+ si diffonde ed è utilizzata per crittografare il messaggio, mentre la chiave privata K- viene tenuta segreta ed è utilizzata per decodificare il messaggio. Si codifica con una delle chiavi e si decodifica con la chiave privata K-. E’ estremamente difficile dedurre K- da K+, ed inoltre le due chiavi sono matematicamente correlate tra di loro.
La crittografia asimmetrica preserva la confidenzialità e l’integrità ma non l’autenticità.
La chiave pubblica K+ può essere distribuita anche attraverso un canale “insicuro” come Internet, oppure essere pubblicata su un web site.


Il funzionamento è semplice, come si potrà notare dalla figura precedente, se Alice vuole inviare un messaggio a Bob, deve utilizzare per criptare un messaggio M, la chiave pubblica di Bob K+, spedisce questo messaggio a Bob, il quale con la sua chiave privata K- decodifica il messaggio. Lo stesso processo è uguale ed invertito nel caso in cui è Bob a volere inviare un messaggio ad Alice.
La crittografia asimmetrica, fonda su un solido principio matematico:l’uso di un problema complesso. Ovvero l’esecuzione di una funziona matematica facile da eseguire, ma difficile da invertire.
Alcuni algoritmi sono:
  • Diffie-Hellmann (Logaritmo discreto)
  • RSA (Fattorizzazione di interi con numeri primi grandi)
  • EIGamail (Logaritmo discreto)
  • EC-Elliptic Curve (Logaritmo discreto)
Gli algoritmi asimmetrici sono caratterizzati dall’essere onerosi dal punto di vista computazionale e quindi “lenti”. Questo inconveniente può essere attenuato o eliminato utilizzando una SessionKey, in questo caso riferendoci alla figura di cui sopra, se Alice vuole inviare un messaggio a Bob crea prima una chiave simmetrica, ad esempio con l’algoritmo DES: KDES. Cripta KDES con la chiave K+ pubblica di Bob e la invia a Bob.
Bob decripta il messaggio ricevuto con la propria chiave privata, ottiene quindi KDES e per le prossime comunicazioni verrà utilizzata questa chiave.