28/08/2009

Aggiornare IOS e PDM su Cisco PIX 501

Data la scarsa documentazione presente in rete, ho pensato di pubblicare una piccola guida su come aggiornare la IOS (che in realtà si chiama Finesse) ed il PDM (PIX Device Manager) del Cisco PIX 501.

Tale modifica si rende necessaria in quanto non è possibile utilizzare il PDM con sistemi operativi abbastanza recenti, quali Windows XP e Windows Vista. Inoltre, il file associato alla IOS e quello relativo al PDM devono sempre essere allineati, dunque è fortemente sconsigliato effettuare l'upgrade del PDM lasciando invariata la versione di IOS.

Fatte queste premesse, veniamo a noi. Per prima cosa occorre utilizzare un programmino che permetta di lanciare un servizio di server TFTP sulla nostra macchina. Personalmente vi consiglio di usare tftp32, programmino semplice, veloce ed affidabile. Potete scaricarlo da qui, è gratuito.

Ora scarichiamo l'ultima versione di IOS disponibile per il nostro firewall, ovvero la 6.3(5), e la relativa versione di PDM (la 3.0(4)). Entrambi i file li potete scaricare direttamente da qui (è necessario un account CCO).

Avviamo il server TFTP sulla nostra macchina, facendo attenzione che sia la IOS che il PDM si trovino nella stessa directory dell'eseguibile. Colleghiamo il nostro PC al firewall con il classico cavo di rete (straight), allacciato ad una delle interfacce "inside". Fatto ciò, utilizziamo un cavo rollover per connettere la porta COM del nostro PC con la porta console del firewall, apriamo Hyperterminal (oppure Putty) e settiamo i seguenti parametri di configurazione:

1) Bit per secondo: 9600

2) Bit di dati: 8

3) Parità: nessuno

4) Bit di stop: 1

5) Controllo del flusso: Hardware

Premiamo invio e dovremmo visualizzare il prompt del nostro firewall.

Digitiamo adesso i seguenti comandi:

pixfirewall# copy tftp flash:image

Address or name of remote host [0.0.0.0]? 192.168.2.2

Source file name [cdisk]? pix635.bin

copying tftp://192.168.2.2/pix635.bin to flash:image

[yes|no|again]? yes

Dove 192.168.2.2 è l'indirizzo IP del nostro PC, sul quale è in esecuzione il server TFTP.

Se tutto è andato a buon fine dovremmo vedere in output il seguente risultato:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!

Received 2101248 bytes
Erasing current image
Writing 1978424 bytes of image
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Image installed

Passiamo adesso al PDM. Digitiamo i comandi:

pixfirewall# copy tftp flash:pdm

Address or name of remote host [0.0.0.0]? 192.168.2.2

Source file name [cdisk]? pdm-304.bin

copying tftp://172.16.3.2/pdm-304.bin to flash:pdm

[yes|no|again]? yes

e successivamente verrà stampato a video il seguente risultato:

Erasing current PDM file
Writing new PDM file
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PDM file installed.

Bene, il gioco è fatto. Non ci resta che installare sul PC che useremo per gestire il nostro PIX una versione di JVM (Java Virtual Machine) <= 1.4.3, poichè con le versioni successive il corretto funzionamento del PDM non è garantito. Potete scaricare la JVM versione 1.4.2 da qui.

Personalmente, prima di installare tale versione di JVM ho disinstallato tutte le altre versioni (più recenti) che si trovavano sul mio sistema, in modo da prevenire eventuali problemi di funzionamento futuri associati al PDM.

Una volta completata l'installazione della JVM apriamo il nostro browser e digitiamo:

https://192.168.2.1

dove 192.168.2.1 è l'indirizzo IP dell'interfaccia "inside" a cui è connessa la nostra LAN.

Appena vi comprarirà la finestra per l'inserimento di username e password, lasciate vuoto il campo username mentre nel campo password inserite la stessa parola chiave scelta per accedere alla modalità enable dal prompt del firewall.

Sicuramente il browser segnalerà che il certificato di autenticità è scaduto. Non preoccupatevi e accettatelo in modo permanente.

Dopo un ulteriore inserimento delle opportune credenziali di accesso e dopo che il PDM avrà caricato in locale tutte le impostazioni relative al nostro firewall, sarà finalmente possibile utilizzare questa GUI per customizzare completamente il nostro piccolo, ma utilissimo, dispositivo.

La guida termina qui, a presto.

10:04 Scritto da: nazarenolatella in Sicurezza | Link permanente | Commenti (9) | Segnala | Tag: ios, pdm, cisco, pix 501, firewall, finesse | OKNOtizie |  Facebook

PPP (Point to Point Protocol)

Come il Frame Relay, anche il PPP è un protocollo di livello 2 ISO/OSI (Datalink) ampiamente utilizzato nell'ambito delle WAN (Wide Area Network). E' inoltre compatibile con diversi protocolli di livello 3, quali IP, IPX ed Appletalk, caratteristica che ne ha certamente favorito l'ampia diffusione.

Occorre notare che il PPP può essere suddiviso in due sottoprotocolli:

- LCP (Link Control Protocol), che svolge operazioni di callback (in cui è il server, dopo aver autenticato il client, ad inviare la richiesta di connessione) e di multilink (identificando ciascun collegamento punto-punto attraverso dei magic number);

ppp callback.jpg

- NCP (Network Control Protocol), il cui compito è quello di gestire al meglio le interazioni tra livello 2 e livello 3. In particolare, il protocollo IPCP (IP Control Protocol), usato nell'ambito della negoziazione dell'IP con L'ISP, fa parte del sottoprotocollo in questione.

Più in generale, il protocollo PPP supporta i seguenti servizi:

- autenticazione;

- multilink;

- callback;

- compressione;

- rilevalmento degli errori.

Per ciò che concerne l'autenticazione, essa si basa sull'uso dei protocolli PAP (Password Authentication Protocol) o CHAP (Challange Handshake Autentication Protocol). Nel primo caso la password viene inviata in chiaro, mentre nel secondo caso la parola chiave risulta cifrata mediante l'algoritmo MD5, il quale ne calcola il digest. Inoltre, il CHAP prima di portare a termine l'autenticazione esegue un three-way handshake.

Affinchè due router riescano a stabilire un link PPP, è necessario che le password usate da entrambi coincidano, mentre lo username specificato deve essere quello appartenente al router con il quale si vuole creare il collegamento.

Il rilevamento degli errori, invece, viene messo in atto mediante il campo FCS (Frame Check Sequence) del frame, il cui compito è quello di identificare l'eventuale presenza di errori di trasmissione. Nel caso in cui il tasso di errore risulti essere eccessivo, il link viene interrotto ed eventualmente ricreato in seguito.

A grandi linee, le principali fasi di una connessione PPP sono le seguenti:

1) creazione del link;

2) autenticazione;

3) configurazione del protocollo di rete;

4) terminazione della connessione.

Vediamo adesso come abilitare il PPP sui dispositivi Cisco:

Router(config-if)# encapsulation ppp

Router(config-if)# ppp authentication pap (o chap)

Router(config-if)# ppp multilink

Per configurare username e password per PAP o CHAP occorre digitare:

Router(config)# username <user> password <pass>

Infine, ecco alcuni comandi di diagnostica:

Router# sh int serial

Router# debug ppp (con parametri opzionali authentication, negotiation, packet, error, chap)

Nei prossimi post esamineremo la logica che regola il funzionamento di alcuni protocolli di routing, quali RIP, EIGRP ed OSPF. A presto.

10:02 Scritto da: nazarenolatella in Networking | Link permanente | Commenti (0) | Segnala | Tag: ppp, wan, protocollo layer 2 | OKNOtizie |  Facebook

14/08/2009

Configurare un firewall Cisco PIX 501

Abbiamo già visto come configurare il router Cisco SOHO 77 (alias Cisco 827). Adesso vedremo come proteggere la nostra LAN configurando un firewall di casa Cisco, ovvero il PIX 501 (vedi immagine sottostante).

product-601333.jpg

Per prima cosa settiamo il nome ed il livello di sicurezza associato all'interfaccia esterna ed all'interfaccia interna che stiamo utilizzando (dopo essere entrati nella modalità di configurazione digitando i comandi ena e successivamente conf t):

pixfirewall(config)# nameif ethernet0 outside security0

pixfirewall(config)# nameif ethernet1 inside security100

Come potete facilmente notare, l'interfaccia ethernet0 l'abbiamo chiamata "outside" e ad essa abbiamo associato il livello di sicurezza "security0". Discorso simile riguarda l'interfaccia ethernet1.

Impostiamo ora la velocità delle interfacce precedentemente menzionate:

pixfirewall(config)# interface ethernet0 auto

pixfirewall(config)# interface ethernet1 100full

Nella fattispecie, l'interfaccia esterna negozia automaticamente la velocità in base al dispositivo ad essa collegato, mentre l'interfaccia interna lavora alla velocità di 100 Mbit/sec in full duplex.

Impostiamo la password per la modalità enable:

pixfirewall(config)# enable password <vostrapass>

Tale password verrà salvata all'interno del file di configurazione in forma cifrata.

Definiamo l'hostname per il nostro firewall:

pixfirewall(config)# hostname <hostname_del_firewall>

Associamo all'interfaccia esterna ed a quella interna i rispettivi indirizzi IP e subnet mask:

pixfirewall(config)# ip address outside 192.168.100.2 255.255.255.252

pixfirewall(config)# ip address inside 172.30.4.1 255.255.255.0

Ovviamente la scelta della classe privata di indirizzi IP e della relativa maschera di sottorete è a vostra discrezione.

Definiamo adesso l'ARP timeout, ovvero ogni quanti secondi la tabella dei MAC address appartenente al nostro firewall deve essere svuotata:

pixfirewall(config)# arp timeout 14400

Definiamo, inoltre, la cosiddetta MTU, ovvero la massima dimensione dei pacchetti che possono transitare attraverso l'interfaccia:

pixfirewall(config)# mtu outside 1500

pixfirewall(config)# mtu inside 1500

Ora è necessario andare a mettere mano su una delle parti più delicate della nostra configurazione, ovvero il NAT. Tramite il NAT, infatti, sarà possibile tradurre un indirizzo privato appartenente alla nostra rete in un indirizzo pubblico, permettendoci di navigare ed accedere alle risorse dislocate su Internet. Per fare ciò occorre digitare:

pixfirewall(config)# global (outside) 1 interface

pixfirewall(config)# nat (inside) 1 172.30.4.0 255.255.255.0

In questo modo stiamo imponendo al firewall di tradurre gli indirizzi privati appartenenti alla LAN interna (172.30.4.0/24) nell'indirizzo associato all'interfaccia esterna, ovvero 192.168.100.2. Sarà il router, successivamente, ad effettuare un nuovo NAT sull'indirizzo privato dell'interfaccia outside, traducendolo nell'indirizzo pubblico assegnatoci dall'ISP.

Per poter uscire su Internet è inoltre necessario definire nell'ambito del firewall una rotta statica mediante il seguente comando:

pixfirewall(config)# route otuside 0.0.0.0 0.0.0.0 192.168.100.1

In questo modo stiamo dicendo al firewall di instradare tutto il traffico destinato ad un indirizzo non presente all'interno della sua tabella di routing verso l'indirizzo 192.168.100.1, ovvero il router. Sarà quindi compito del router, tramite una nuova default route, far si che il traffico venga indirizzato verso l'esterno.

Ora, supponiamo che all'interno della nostra LAN sia presente una risorsa (ad esempio un WEB server) che debba essere necessariamente contattabile dall'esterno. Ovviamente, la cosa migliore da fare in questo caso sarebbe quella di posizionare il server nella DMZ ma per semplicità tale server verrà dislocato nell'ambito della LAN stessa.

L'indirizzo IP del server è 172.30.4.2, quindi occorrerà digitare:

pixfirewall(config)# static (inside, outside) 192.168.100.2 172.30.4.2 netmask 255.255.255.0 0 0

dove l'indirizzo IP dell'interfaccia outside deve essere inserito sempre PRIMA dell'indirizzo privato associato al server.

Definiamo adesso il tipo di traffico che deve essere accettato in ingresso all'interfaccia esterna. E' possibile fare ciò mediante un'ACL nominale:

pixfirewall(config)# access-list inbound permit tcp any host 192.168.100.2 eq 80

pixfirewall(config)# access-list inbound permit icmp any host 192.168.100.2

In tal modo il nostro Web server potrà essere contattato attraverso la porta 80 e risponderà ai ping eseguiti dall'esterno. Non ci resta che associare l'ACL appena creata all'interfaccia di interesse:

pixfirewall(config)# access-group inbound in interface outside

Sarebbe utile, inoltre, consentire la gestione da remoto del firewall, senza doversi collegare necessariamente a tale dispositivo mediante cavo console (altrimenti conosciuto come rollover). Per fare ciò è necessario abilitare Telnet:

pixfirewall(config)# telnet 172.30.4.0 255.255.255.0 inside

ovvero stiamo imponendo al firewall di accettare esclusivamente le connessioni telnet provenienti dall'interfaccia interna, nella fattispecie dagli host della LAN.

pixfirewall(config)# telnet timeout 5

con questo comando il firewall chiuderà qualunque sessione Telnet dopo 5 minuti di inattività.

Occorre notare che il nostro firewall (per default) non permette il transito di echo-reply provenienti dall'interfaccia "outside" e dirette verso l'interfaccia "inside". Ciò significa che qualunque ping originato dalla LAN e diretto verso l'esterno non potrà ricevere risposta. Per evitare ciò, basta insirire le seguenti regole all'ACL "inbound" precedentemente creata:

access-list inbound permit icmp any any echo-reply
access-list inbound permit icmp any any time-exceeded
access-list inbound permit icmp any any unreachable
access-list inbound permit icmp any any source-quench

Bene, salviamo la nostra configurazione ed il gioco è fatto:

write memory

La guida termina qui. Nei prossimi post vedremo come gestire il nostro firewall mediante PDM (PIX Device Manager). A presto.

 

21:02 Scritto da: nazarenolatella in Sicurezza | Link permanente | Commenti (22) | Segnala | Tag: cisco, pix, firewall, configurazione | OKNOtizie |  Facebook

11/08/2009

MAC (Message Authentication Code) e tecniche HASH

Abbiamo già visto come la cifratura convenzionale riesca a garantire un adeguato livello di protezione contro gli attacchi di tipo passivo, volti cioè all'intercettazione (sniffing) dei dati. Vediamo adesso quali sono le tecniche utilizzate per difendersi contro l'eventuale alterazione (tampering) di uno o più messaggi (attacchi di tipo attivo).

Sia ben chiaro che la cifratura convenzionale, oltre a garantire la riservatezza, riesce anche a soddisfare i requisiti associati all'autenticazione dei messaggi; supponiamo, a tal proposito, che solo mittente (A) e destinatario (B) condividano la chiave di cifratura KAB. Quando il destinatario B andrà a decifrare il messaggio inviato dal mittente A utilizzando la chiave KAB sarà certo che la sorgente del messaggio è quella legittima e che il messaggio stesso non è stato alterato. L'aggiunta di un eventuale numero di sequenza (nel caso di più messaggi) e di un timestamp, preservano il messaggio da eventuali repliche o ritardi di natura malevola.

L'uso della cifratura convenzionale per l'autenticazione dei messaggi, però, ha i suoi pro ed i suoi contro. Infatti, non conviene utilizzare tale approccio nel momento in cui uno stesso messaggio cifrato debba essere inviato in broadcast (portando tutte le macchine della rete ad effettuare operazioni di decifratura dopo averlo ricevuto), oppure nel caso in cui vengano inviati più messaggi cifrati ad una stessa macchina (magari congestionata), la quale si troverebbe costretta ad effettuare ulteriori operazioni di calcolo volte alla decrittazione del messaggio stesso.

Ecco allora che in questi casi risulta molto più conveniente utilizzare altre tecniche per l'autenticazione dei messaggi, quali il MAC (Message Authentication Code).

Tale tecnica prevede che solo mittente (A) e destinatario (B) condividano la chiave segreta KAB (detta SID). Il mittente A, prima di inviare il messaggio M, calcola il MAC, mediante una funzione che ha come argomenti il contenuto del messaggio M e la chiave segreta KAB: MAC=F(KAB, M). Il MAC così generato verrà accodato al messaggio in chiaro M e verrà inoltrato al destinario B.

Una volta ricevuto tale messaggio, B calcolerà a sua volta il MAC del messaggio utilizzando sempre KAB ed il contenuto del messaggio in chiaro (M). Se i due MAC coincidono, il destinatario ha la certezza che la sorgente è quella legittima e che il messaggio non è stato contraffatto.

Il messaggio, comunque, potrebbe essere ancora oggetto di eventuali attacchi di tipo reply oppure di eventuali ritardi dolosi.

Un'altra tecnica ampiemante utilizzata nell'ambito dell'autenticazione dei messaggi prevede l'uso di funzioni HASH. Tali funzioni devono presentare le seguenti caratteristiche:

1) devono essere applicabili a testi in chiaro di lunghezza variabile;

2) devono generare un digest (impronta) di lunghezza fissa;

3) devono possedere una complessità computazionale non elevata, in modo da semplificare la loro implementazione sia a livello software che a livello hardware;

4) dato h (il digest) è computazionalmente impossibile trovare x tale che H(x)=h. In altri termini dato il digest è computazionalmente impossibile trovare il testo in chiaro (x) a partire dal quale il digest stesso è stato generato. Tale proprietà è detta di uniderezionalità o one-way (senso unico);

5) è computazionalmente impossibile trovare y diverso da x tale che H(x) = H(y). In questo caso parliamo di resistenza debole alle collisioni (si ha una collisione quando due testi in chiaro differenti generano lo stesso digest);

6) è computazionalmente impossibile trovare una coppia (x, y) tale che H(x) = H(y). In questo caso parliamo di resistenza forte alle collisioni. La resistenza forte implica la resistenza debole, ma non vale il viceversa.

Le prime 3 proprietà sono di carattere pratico, la quarta e la quinta garantiscono discreti livelli di sicurezza, mentre la sesta consente alle funzioni HASH di resistere ad attacchi piuttosto sofisticati, tra cui l'attacco birthday, il quale riesce a ridurre la robustezza delle funzioni a m-bit da 2^m a 2^m/2.

HASH e cifratura simmetrica

Per aumentare ulteriormente i livelli di sicurezza offerti dalle funzioni HASH si potrebbe utilizzare la cifratura convenzionale (simmetrica). Ad esempio, il mittente A, dopo aver calcolato il digest del messaggio in chiaro M, lo cifra utilizzando un algoritmo (ad esempio DES) ed una chiave K (conosciuta, ovviamente, anche dal destinatario). Una volta ricevuto il messaggio, il destinatario B userà M (il messaggio in chiaro) per calcolare il digest H(M). Successivamente B decifrerà mediante K il digest calcolato dal mittente A ed accodato ad M ed infine effettuerà un confronto tra il digest calcolato direttamente da lui e quello calcolato ed inviatogli dal mittente.

Dal punto di vista computazionale, le funzioni HASH hanno costo lineare (sono sostanzialmente delle somme modulari) ed il DES è molto semplice da implementare a livello hardware, attribuendo a tale approccio un elevata ottimizzazione dal punto di vista delle prestazioni. C'è da dire, però, che il DES è un cifrario a blocchi ed in quanto tale garantisce l'integrità di ogni singolo blocco e non dell'intera sequenza. A titolo di esempio, se il mittente inviasse la sequenza 1|2|3|4 il desinatario potrebbe ricevere 2|1|3|4, alterando il significato del messaggio nella sua interezza. Per ovviare a ciò si dovrebbero utilizzare delle tecniche di concatenazione, le quali, però, sono molto costose.

Infine, in questo caso la resistenza debole alle collisioni deve essere rispettata, in quanto se si riuscisse a trovare un testo in chiaro M' che generi lo stesso digest del messaggio lecito M, l'attaccante potrebbe sostituire M con M' senza che il destinatario se ne accorga, compromettendo l'integrità del messaggio (e della fonte). L'unidirezionalità e la resistenza forte, invece, non sono fonte di preoccupazione.

crittosim.jpg

 

HASH e cifratura asimmetrica

Un altro approccio per irrobustire ulteriormente le funzioni HASH si basa sull'uso della cifratura asimmetrica. Sia, come al solito, A il mittente e B il destinatario. A calcola il digest (H(M)) sul messaggio in chiaro M e successivamente cifra il digest stesso attraverso la sua chiave segreta SA, generando H(M)'. A questo punto accoda il digest cifrato al messaggio in chiaro e lo inoltra al destinatario. Il destinatario, ovvero B, riceve il messaggio in chiaro M concatenato al digest cifrato H(M)', calcola a sua volta il digest su M e decifra H(M)' utilizzando la chiave pubblica del mittente, ovvero PA. Se il digest calcolato dal destinatario coincide con quello del mittente allora dovrebbe essere garantita l'autenticità della sorgente e l'integrità del messaggio. Ma è davvero così? La risposta è no. Infatti supponiamo che un attaccante intercetti M||H(M)' e sostituisca H(M)' con H(M)'', deliberatamente creato da egli stesso. A questo punto decifra H(M)'' utilizzando PA e genera il messaggio in chiaro M''. Il messaggio risulta così alterato e stesso discorso vale per la fonte, anche se il destinatario non si è accorto di quanto avvenuto.

crittasim.jpg

HASH e valore segreto

Un altro metodo per rendere ancora più sicure le funzioni HASH riguarda l'uso di un valore segreto, che chiameremo SAB, condiviso da mittente A e destinatario B. Prima di calcolare l'HASH sul messaggio in chiaro M, il mittente concatena SAB ad M e solo dopo ne calcola l'HASH:

C=H(SAB||M). A questo punto A trasmetterà M||C ed appena tale messaggio verrà ricevuto dal destinatario B, quest'ultimo provvederà a concatenare ad M SAB, a calcolare l'HASH ed infine a confrontare il digest così ottenuto con quello inviatogli dal mittente. Se il confronto va a buon fine allora sia messaggio che sorgente possono considerarsi integri.

digests.jpg

 

Una variante di tale approccio viene utilizzato nell'HMAC, che esamineremo in dettaglio nei prossimi post. A presto.

22:36 Scritto da: nazarenolatella in Crittografia | Link permanente | Commenti (0) | Segnala | OKNOtizie |  Facebook

Tutti gli articoli