next up previous contents
Next: Interfaccia WWW - DBMS Up: Autorizzazione, autenticazione e trasmissione Previous: Autorizzazione e autenticazione   Contents

Trasmissione "sicura" tramite SSL

Pur avendo una protezione ragionevolmente sicura con la trasmissione della password codificata con la funzione MD5, tale metodo risulta non applicabile in quanto i navigatori più diffusi non la supportano. Uno standard di trasmissione sicura è quello sviluppato dalla Netscape Corp. noto come SSL (Secure Socket Layer).

Il protocollo SSL è stato sviluppato per consentire una comunicazione affidabile e sicura tra due applicazioni (cliente browser e servente http). Si tratta di un protocollo stratificato di livello applicativo. Lo strato più basso si appoggia su un livello di trasporto affidabile (ad es. quello fornito da TCP) e realizza una sorta di tunneling. Il suo scopo è quello di incapsulare i messaggi, fornendo un meccanismo trasparente ed indipendente dai livelli superiori. Il protocollo lavora utilizzando un meccanismo di handshake che consente di identificare le due parti, negoziare un algoritmo e una chiave di crittazione. In una fase iniziale il client identifica il server attraverso l'ispezione del suo certificato 10 elettronico. Segue la negoziazione di una protocollo a chiave simmetrica per lo scambio dei dati (DES) e la generazione tramite tecniche di crittografia pubblica (RSA) di una chiave segreta condivisa tra le due parti. A questo punto è possibile utilizzare una comunicazione sicura cifrata con tale chiave segreta.

È da notare che questo algoritmo viene implementato su tutti i navigatori più diffusi, ma date le limitazioni di esportazione delle leggi americane, la lunghezza della chiave permessa (40 bit) non consente di garantire un livello di sicurezza adeguato alle potenze di calcolo attualmente disponibili per la crittoanalisi. Ciò non ostante, rappresenta l'unico strumento attualmente disponibile per inserire un minimo di protezione nella trasmissione su canali non sicuri.

L'implementazione del protocollo non viene fornita direttamente nel server apache (a causa dei problemi sulle leggi di importazione ed esportazione di alcuni Paesi). Per questo motivo deve essere installato e configurato un modulo 11che fornisce le primitive dell'SSL. Un problema che si verifica nell'utilizzo del nuovo servente http che viene costruito, consiste nel fatto che non è più possibile utilizzare il vecchio protocollo HTTP/1.1. In pratica si rende necessario avere due processi attivi, uno per il servizio HTTP standard ed uno per il servizio sicuro HTTPS (che equivale all'HTTP/1.1 con le estensioni SSL).

A causa del fatto che una configurazione di questo tipo porta ad un carico per la macchina su cui gira il servente web non indifferente, ho preferito utilizzare una soluzione alternativa. Sfruttando le capacità di apache di creare i textitvirtual host (cfr. 6.2) ed il fatto che al servizio sia stata associata un indirizzo dalla IANA 12 è possibile configurare l'apache come un singolo demone che risponde su più porte creando (fork(2)) un processo per il servizio che viene richiesto a seconda della porta. In questo modo riferendosi come http://chrome.sci.univr.it viene utilizzato l'HTTP/1.1, mentre invocando https://chrome.sci.univr.it, si chiama il servizio sulla porta 443 che effettua il servizio con SSL.


next up previous contents
Next: Interfaccia WWW - DBMS Up: Autorizzazione, autenticazione e trasmissione Previous: Autorizzazione e autenticazione   Contents
Mirko Manea
2000-05-07