Annunci
Al termine di una lunga sperimentazione ecco a voi URL Inspector.  Questo strumento permette di analizzare una URL Internet e dopo avere effettuato le relative interrogazioni ai diversi whois server, nonchè dopo aver parserizzato le relative risposte, compone l'esito in un formato direttamete leggibile in modo da ridurre i tempi di ricerca. Lo strumento è comunque ancora in fase beta, vista la complessità dei controlli che si devono eseguire e l'innumerevole combinazione di URL che si possono comporre. Presto dunque, sperimentate la vostra ricerca, così da poter contribuire all'uscita della prima versione. Pagina di URL Inspector
Secure Authentication System PDF Print E-mail
User Rating: / 0
PoorBest 
Written by Luca Guerrieri   
Thursday, 08 July 2010 18:16

A distanza di 2 anni dalla pubblicazione del primo articolo su questo sistema di autenticazione realizzato per PiXAServer (l'application server in PHP pubblicato nell'apposita area di questo sito) pubblico l'ultima versione e, visto che il progetto non solo è maturo ma è anche utilizzabile come modulo standalone per le atenticazioni ho deciso di rilasciarlo con il nome di Secure Authentication System.

Si tratta di un sistema che realizza dei controlli sugl’identificativi di Sessione (SessionID), in modo da avere sotto controllo sia il tipo di accessi sia l’associazione fra credenziali ed appunto l’identificativo di Sessione. In pratica, la visualizzazione dei contenuti è permessa solo se sono presenti, contemporaneamente, diverse condizioni. Una peculiarità del Secure Authentication System è che realizza la fusione e la criptazione delle credenziali di accesso, inserite dall'utente, direttamente lato client, cioè dopo che l'utente ha inserito le proprie credenziali l'invio avviene in modalità criptata. Il client, infatti, realizza l'hashing md5 di : username, password e di una stringa, generata casualmente dal sistema e visualizzata direttamente a video (sistema CAPTCHA). L’hash di queste informazioni viene poi inviato al server di autenticazione. Quest'ultimo, ricevuta tale informazione, innanzitutto controlla che l'utente esista  (in caso negativo non prosegue e rilancia la pagina di login), in quel caso prova a generare la stessa stringa hash con le informazioni in suo possesso. Se l'esito è positivo vuol dire che non c'è stato nessuno che ha alterato i dati, altrimenti non consente le successive operazioni e rimanda immediatamente alla pagina di login.

  1. richiesta di login
  2. visualizzazione pagina di Login con avvio del client grafico per il successivo invio
  3. della stringa CAPTCHA per criptare le credenziali di accesso;
  4. inserimento da parte dell’utente delle credenziali di accesso criptate;
  5. invio delle credenziali di accesso al server
  6. il server controlla l’esistenza della username in caso affermativo procede altrimenti
  7. si ritorna al punto 2
  8. il server genera una stringa di hash composta dagli stessi dati inviati al client
  9. (Captcha + username + password)
  10. il server confronta le due stringhe hash (ricevuta e generata) nel caso siano uguali
  11. procede, altrimenti rimanda al punto 2;
  12. invio esito delle operazioni di login e successivo redirect all’area privata.

flusso

Schermata di LOGIN

login_no_title

In pratica il sistema di login ha le seguenti proprietà :

Trasmissione sicura delle credenziali d'accesso (criptate) da un client in esecuzione sulla macchina (peculiarità della tecnologia Flex) senza in realtà costringere l'utente ad installare un apposito software sul proprio computer ed inoltre usufruendo delle caratteristiche di multi-piattaforma.

Invio asincrono delle credenziali. Il sistema, di fatto, implementa una logica di autenticazione a chiave pubblica/chiave privata, ove la chiave pubblica è la combinazione di username e password e la chiave privata è di fatto la stringa casuale generata ed inviata al client sotto forma d'immagine (CAPTCHA). In questo modo un malintenzionato che intercetta il traffico sin dall'inizio, per scoprire le credenziali d’accesso, non sarebbe in grado di identificarle in quanto: nonostante venisse in possesso della stringa casuale non potrebbe scoprire la username, la password e la OTP con cui è stata generata in quanto viaggiano, verso il server, in forma criptata. Nell'ipotesi in cui riuscisse a conoscere username e password (per evitare di lasciare tracce nel sistema di logging) dovrebbe ogni volta intercettare la stringa casuale generata perché, funzionando come una OTP viene "bruciata" ad ogni login. Inoltre se il malintenzionato, riuscisse a scoprire la username e la password e quindi la stringa OTP non potrebbe portare a termine un attacco di Hjacking di Sessione poiché la sessione viene rigenerata al termine della procedura di login. In tal modo il sistema provvede autonomamente a controllare la congruità delle informazioni. In fine l’utente, nel caso di quest’ultimo tipo di attacco, riceverebbe l’informazione che “qualcun altro” sta utilizzando le sue credenziali.

Sicurezza a vari livelli, se l'utente non esiste non si procede ad ulteriori operazioni fra client e server, riducendo sia il carico di lavoro del server sia le possibilità di riuscita di un attacco.

Unicità delle credenziali d'accesso, l'utente usa sempre quelle assegnategli ma il sistema riceve un'insieme diverso ogni volta, come in un sistema O.T.P. (One Time Password) in caso non corrispondano l’utente viene informato da un apposito messaggio.

login_message_err_59

Elaborazione delle informazioni lato client completamente invisibile ad un malintenzionato che potrebbe accedere fisicamente alla macchina della vittima. La criptazione viene effettuata con un applicativo compilato e residente sul client, quindi non direttamente interpretabile (applicazione Flex su pagina html). In questo modo, il malintenzionato, non può sapere come viene composta la stringa di login.

Possibilità di applicare algoritmi proprietari di criptazione per aumentarne la segretezza (basta conoscere Javascript o mxml).

Delega della segretezza delle credenziali all'utente ed al gestore del sistema informatico.

Redirezionamento dell’utente, sin dalla fase di login, ad una comunicazione con protocollo https, per raggiungere una completa segretezza della comunicazione ed una sicura identificazione dell'utente sin dalle prime fasi di autenticazione.

Controllo della validità della Sessione ad ogni richiesta di una pagina. L'autenticazione, infatti, è basata sulle sessioni e non su IP, credenziali, ecc. in

Memorizzazione della sessione su database e non nel Cookie o in variabili d’ambiente accessibili ad ignoti, infatti si usa il cookie generato al login come se fosse un certificato, al solo fine di avere certezza che il client sia quello registrato.

sessione_attiva_obf

Controllo dell'esistenza di sessioni multiple, in quell'ipotesi i relativi utenti vengono costretti nuovamente al login.

Impossibilità dell'uso contemporaneo delle stesse credenziali, solo un utente alla volta può usare la sua username e password, se qualcun'altro le utilizza il legittimo proprietario viene informato e l'informazione viene registrata in un file di log

login_message_sessione_attiva-obf

Possibilità di sospendere una sessione attiva, causando il logout forzato di quell'utente.

Gestione dei livelli di accesso (amministratore / power user / user / guest ) completamente personalizzabili.

level

Registrazione / Ricorda password / Cambia password . Tipiche funzionalità per effettuare la registrazione di un utente (con relativo controllo dell’informazione inserita), sistema per cambiare autonomamente la password, sistema per ricordare la password rinviandola dopo un controllo sulla identità dell’utente (risposta a domanda segreta)

Memorizzazione della password in modo criptato. Questo permette di tenere segreta la password ma anche di rinviarla a richiesta all’indirizzo e-mail inserito in fase di registrazione.

username_password

Registrazione su file di log legato all'utente e su file di log di sistema di tutte le operazioni inerenti l’accesso

DESCRIZIONE

Per quanto riguarda la descrizione ritengo più semplice una immagine e qualche prova live.

 

Last Updated on Tuesday, 20 July 2010 08:36
 
Creative Commons LicenseTutti i contenuti riportati in questo sito vengono rilasciati con la seguente licenza : Creative Commons Attribution - NonCommercial - ShareAlike Si precisa, inoltre, che tutti i singoli marchi registrati sono dei rispettivi proprietari. Diritti d’autore e proprietà industriale: I testi e le immagini pubblicati in questo sito sono di proprietà esclusiva dei relativi autori i quali indicano per ogni opera la relativa licenza di rilascio. In caso, quest'ultima, non sia espressamente indicata si assumerà, a favore del relativo autore di ogni opera, la Creative Commons Attribution - NonCommercial - ShareAlike. Ogni singolo autore è responsabile dei contenuti da egli realizzati. Note ex L. 62/01 - I contenuti di questo sito non hanno carattere di periodicità e non rappresentano "prodotto editoriale". I controlli sui contenuti riguardano solo ed esclusivamente quelli pubblicati direttamente da questo  sito. I link ad altre pagine non rientrano nei controlli in questione.