SICUREZZA
--------------------
INDICE



  Autenticazione
Trasmissione dati tra client e server
Salvataggio dati nel database
Riferimenti



  << Torna all'Home Page


Il servizio Telemed è stato implementato con un alto livello di sicurezza.
La sicurezza dei dati viene gestita a diversi livelli, tra cui l'autenticazione, la trasmissione dei dati tra client e server, ed il salvataggio dei dati nel database

Autenticazione:
-------------------------

L'autenticazione viene garantita da un sistema di login, studiato in modo tale da prevenire tentativi di intrusione di diverso tipo.
Il sistema di login si basa sull'uso dell'algoritmo di codifica non reversibile MD5, implementato sul client tramite javascript per prevenire un tentativo di sniffing dati del tipo "man in the middle".
Il problema fondamentale nei sistemi di login tradizionali è la possibilità per un utente esterno di intercettare il traffico dati tra il client e il server, nel tentativo di recuperare la password che solitamente viene trasmessa in chiaro, benchè poi sia immagazzinata nel database codificata.
Questo è il punto debole classico della fase di login, che questo sistema riesce a correggere:

  • Ogni tentativo di login è legato ad un challenge alfanumerico casuale, che viene spedito al cliente una volta generato dal server.
  • Quando l'utente digita username e password, la password viene codificata tramite l'algoritmo MD5 dopo essere stata concatenata al challenge: il risultato viene codificato con MD5 una seconda volta per ulteriore sicurezza.
  • Quanto generato viene passato al server, insieme al challenge, che lo confronta con i dati contenuti nel database: se i campi inseriti sono corretti, viene rilasciato un cookie codificato con l'algoritmo RIJNDAEL a 256 bit
  • Per prevenire attacchi a forza bruta sulla stringa codificata con MD5 (l'attacco è comunque materialmente impossibile, vista la potenza di calcolo necessaria per de-codificare una stringa codificata con due passaggi MD5), ogni challenge ha una vita massima configurabile (di default 5 minuti).
  • Viene inoltre verificata la corrispondenza tra il numero di IP di chi effettua l'aperura della pagina di login, e di chi inserisce effettivamente i dati di accesso.

Trasmissione dati tra client (tipicamente il browser dell'utente) e server
-------------------------

La trasmissione dati viene garantita dal protocollo SSL a 128 bit e da un certificato di sicurezza emesso da un ente autorizzato.

Cosa significa SSL?
Secure Sockets Layer (SSL) è un protocollo sviluppato da Netscape che permette di proteggere l'informazione che passa tra client e server. Attraverso l'uso di tecniche crittografiche come la codificazione e la firma digitale, questo protocollo rende possibile le seguenti funzioni:

  • Permette ai browser e server del Web di autenticarsi a vicenda
  • Fa si che informazioni confidenziali possano essere scambiate tra browser e server, senza che siano accessibili a terzi
  • Assicurano che gli scambi dei dati tra browser e server non possano essere alterati, in maniera accidentale o intenzionale
Certificati di sicurezza
Le chiavi (keys) che stabiliscono delle connessioni sicure tramite il protocolli SSL si chiamano certificati di sicurezza.
Un certificato pubblico di sicurezza è analogo a un passaporto nel senso che dimostra l'identità di un soggetto ed è autorizzato da un terzo organismo conosciuto nel mondo della sicurezza come Certification Authority (CA). Questo organismo certificatore può essere paragonato a un Ufficio Passaporti: verifica l'identità, crea un documento riconosciuto e valido, e rilascia il documento stesso.

Autorità di Certificazione
Un'Autorità di Certificazione è un'autorità accreditata, responsabile dell'emissione dei certificati utilizzati per l'identificazione di una comunità d'individui, di sistemi o di altre identità che utilizzano una rete informatica.
Firmando in modo digitale i certificati emessi, l'Autorità di Certificazione unisce l'identità del possessore del certificato ad una chiave d'accesso all'interno del certificato stesso, facendosi così garante della validità di quest'ultimo. Coloro che utilizzano il network possiedono la chiave e la usano per verificare certificati di altri. Così facendo hanno la sicurezza che questi certificati siano autentici e che si riferiscano alla persona in questione, e sanno che l'Autorità di Certificazione quale organo di fiducia si farà garante di questa certificazione. L'Autorità di Certificazione ha un ruolo cruciale nella sicurezza del Web e fa in modo che la certificazione per conto terzi sia possibile.
In un sistema di network complesso quale il Web, il modello di fiducia per conto terzi è necessario nelle numerose e dinamiche relazioni tra client e server. È possibile che i server e i client non abbiano stabilito un rapporto di fiducia reciproca; in ogni caso entrambe le parti hanno interesse ad avere trasmissioni sicure. L'Autorità di Certificazione è l'anello mancante che permette trasmissioni sicure. Avendo garanzie dall'Autorità di Certificazione e dato che questo organismo ha inoltre garantito per l'identificazione e validità di entrambe le parti, la transazione di dati può avvenire senza rischi di frode e con assoluta sicurezza.

Salvataggio dati nel database
-------------------------

I dati sensibili vengono salvati sul database in forma criptata, tramite un nuovo algoritmo molto sicuro, Rijndael a 256 bit.
Per criptare, la stringa viene passata tramite un algoritmo di hash SHA1 (Secure Hash Algorithm versione 1.0), in modo da ottenere una verifica della lunghezza dellla stringa stessa (checksum).
La lunghezza viene posta all'inizio della stringa in modo da migliorare la codifica grazie alla sua natura pseudo casuale e perchè ha lunghezza nota.
Anche la chiave viene passata tramite SHA1, in modo da renderla più sicura (ed evitare un attacco alla password tramite dizionari). Un vettore di inizializzazione viene quindi generato, in modo da essere accodato al testo cifrato.
Infine avviene la criptazione vera e propria, eseguita tramite il vettore di inizializzazione con l'algoritmo Rijndael a 256 bit.

Riferimenti
-------------------------

Algoritmo SHA1 (Secure Hash Algorithm versione 1.0)

B. Schneier. Applied Cryptography : Protocols, Algorithms, and Source Code in C. Wiley, 2nd Edition, 1995.
B. Preneel. Analysis and Design of Cryptographic Hash Functions. Ph.D. Thesis, Katholieke University Leuven, 1993.
M.J.B. Robshaw. MD2, MD4, MD5, SHA and Other Hash Functions. Technical Report TR-101, version 4.0, RSA Laboratories, July 1995.
http://www.w3.org/PICS/DSig/SHA1_1_0.html

Algoritmo Rijndael

http://csrc.nist.gov/encryption/aes/rijndael/
http://www.esat.kuleuven.ac.be/~rijmen/rijndael/

SSL

R. Rivest, A. Shamir, and L. M. Adleman, "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems," Communications of the ACM, v. 21, n. 2, Feb 1978, pp. 120-126.
http://wp.netscape.com/eng/ssl3/


  © 2009 Pronesis S.r.l.