Sicurezza
Cos’è Ground’81
Ground’81 è un framework sviluppato da Web’81 specificamente per ospitare applicazioni web. La sua attuale versione (la terza) si distingue per le elevate prestazioni ed il consumo limitato di banda. Grazie alla tecnologia Ajax fogli di stile e librerie javascript vengono caricati una sola volta per sessione, permettendo al contempo all’utente un caricamento pressochè
istantaneo della sezione richiesta.
Il framework offre una gamma di funzioni comuni e necessarie alla maggior parte dei sistemi, “da solo” non svolge nessun tipo di operazione, ma si pone come gestore di moduli realizzati ad hoc, ai quali semplifica ed organizza il lavoro.
Dovendo sviluppare una soluzione customizzata, si preferisce appoggiarsi ad un framework sia in termini di efficenza in fase di sviluppo, sia per i programmi di maintenance che permettono alle applicazioni di essere mantenute aggiornate nel tempo con nuove funzionalità.
Per quanto riguarda la profilazione degli utenti il framework permette di associarlo a due caratteristiche: struttura di appartenenza e ruolo di pertinenza.
La struttura indica un insieme di utenti che si occupano di un determinato numero di “informazioni”, generalmente coincide con le sedi o le filiali di una azienda. Ogni struttura ha una gamma di utenti propria ed indipendente e può avere strutture sottostanti (sottostrutture), le quali a loro volta avranno i propri utenti e, eventualmente, sottostrutture.
La struttura ad albero che si viene a formare diventa importante non solo al fine organizzativo, ma anche per quello funzionale. Ogni utente infatti, indipendentemente dalla struttura di appartenenza, ha un ruolo. I ruoli consentono di semplificare il controllo delle autorizzazioni, poiché permettono sia di specificare a quali funzionalità, sia a quale livello di dati possono
accedere i vari utenti.
Le funzionalità dipendono dal sistema che si andrà a realizzare ed indicano le singole operazioni che possono essere eseguite da un operatore, ad esempio in un modulo di gestione documentale avremo le seguenti funzioni: Visualizza Documento, Aggiungi
Documento, Modifica Documento ed Elimina Documento. Ad ogni ruolo abbineremo permessi e funzioni che verranno poi attribuiti agli utenti che rivestono quello specifico ruolo. Il controllo sui dati avviene invece incrociando l’utente e la struttura di appartenenza, mantenendo il grado parentale padre/figlio tra le strutture. In pratica l’accesso ai dati viene
suddiviso in quattro livelli:
• Dati Propri: Visualizzo solamente i dati a me assegnati.
• Struttura Propria: Accesso a tutti i dati assegnati ed a tutti quelli assegnati agli utenti della propria struttura.
• Struttura Propria e Strutture sottostanti: Accesso a tutti i dati assegnati, a tutti quelli assegnati agli utenti della propria struttura o delle strutture sottostanti.
• Visione completa: Accesso completo a qualunque dato, indipendentemente dalla propria ubicazione ed all’appartenenza del dato.Tornando all’esempio del modulo di gestione documentale questa classificazione permetterà ad un utente di accedere solo ai propri documenti, a quelli dei colleghi, piuttosto che a quelli della filiale controllata.
Tra i moduli standard più diffusi:
• Autenticazione: modulo di gestione utenti, con relativa gestione delle permission e del tracciamento degli accessi.
• Power Form: un insieme di strumenti per implementare le funzionalità standard delle form.
• Messages: un sistema di comunicazione similare alle mail che consente di inviare messaggi ad un singolo utente, ad un gruppo o ad una o più strutture
• Comunication: sistema di comunicazione asincrona utente-utente che si sviluppa sulla base di dialoghi e graficamente ricorda la visualizzazione degli SMS dei moderni smartphones.
• Live Chat: comunicazione in tempo reale con altri utenti collegati sul sistema. Non funziona off-line.
• Sidebar: una barra a scomparsa che può essere configurata per contenere informazioni di vario tipo.
• Documentor: un piccolo gestore documentale, che consente di condividere files con gruppi di utenti (identificati per ruolo e per struttura di appartenenza).
• Notify: sistema per la gestione di notifiche. Notify funziona mostrando una riquadro temporizzato nell’angolo superiore destro del browser. In più integra un polling tra client e server permettendo di eseguire controlli anche su eventi client.
• Babele: modulo per la gestione multilingua dell’intero sistema.
Integrazione con librerie esterne
• DataTables: per la gestione dei dati tabellari
• Highcharts: per la generazione on demand di grafici senza l’utilizzo di Flash o Silverlight
• TCPdf: per la generazione di documenti PDF
• PHPMailer: per l’invio di mail (anche massive)
• Google Maps: integrazione con i servizi.
API Connect
Api Connect è un modulo integrato con il framework Ground ’81 che permette lo scambio dati con la piattaforma e il mondo esterno tramite comunicazione REST API. Il web service consente semplici chiamate HTTP attraverso le quali è possibile inviare istruzioni di inserimento o lettura di dati, o anche semplicemente per eseguire delle operazioni lato server.
La comunicazione del dato avviene in formato JSON.
Autenticazione
L’autenticazione avviene tramite il riconoscimento di 2 codici (user e password). Il sistema genera un token che rimane valido fino alla sua scadenza, oppure fino a quando una delle parte non richiede la generazione di una nuova chiave o ancora finché non viene revocato dall’amministratore.
In base alla richiesta del cliente, Il sistema può accettare chiamate da qualunque indirizzo oppure solamente quelli che provengono da una lista di server contenuti in una “white list” di IP.
Protocollo hash
Al fine di garantire un livello di sicurezza alto, ma soprattutto per essere certi che non vi siano state anomalie durante la trasmissione del dato, viene utilizzato un algoritmo di hash basato su una chiave conosciuta da entrambe le parti, ma non condivisa nella comunicazione.
Il modo migliore per spiegarne il funzionamento è fare un esempio.
Immaginiamo che Alice voglia dichiarare il suo amore a Bob, per fare ciò decide di inviare un messaggio a Bob per posta.
Fin qui tutto bene, ma James, l’ex-fidanzato di Alice, non è contento della cosa e decide di giocare un brutto scherzo alla sua vecchia fiamma. James si finge Bob ingannando il postino, intercetta il messaggio di Alice, lo cambia e lo inoltra quindi al povero Bob.
Bob non ha modo di accorgersi della truffa perché non ha nessun mezzo per determinare se il messaggio ricevuto proveniva davvero da Alice. La soluzione al problema arriva attraverso le funzioni crittografiche di hash.
In sostanza, queste funzioni sono in grado di restituirci una “firma” di un particolare contenuto, la peculiarità che ci interessa è quella che se il contenuto cambia di anche solo un singolo carattere la firma restituita è differente. Non è possibile dalla firma risalire al contenuto, ma abbiamo la sicurezza che due contenuti con la stessa firma sono sicuramente uguali.
Torniamo a Bob ed Alice. C’è una cosa che solo loro due conoscono: il nome della canzone che suonava al party in cui si sono visti per la prima volta, “Purple Rain”.
Alice quindi prende il suo messaggio, ci aggiunge il nome della canzone (il “segreto”) e passa il tutto attraverso un algoritmo di hash, generando una “firma”. Prende quindi il messaggio originale, gli allega la firma ottenuta e la invia a Bob.
Bob, una volta ottenuto il messaggio, recupera il contenuto e mette temporaneamente da parte la firma ricevuta.
Dopodichè esegue la stessa procedura di firma eseguita da Alice, usando il loro segreto condiviso “Purple Rain” e verifica se la firma da lui ottenuta coincide con quella ricevuta.
Le firme coincidono e Bob è sicuro che il messaggio ricevuto sia stato davvero scritto da Alice. Ma siamo davvero sicuri questa volta? E se James provasse a cambiare di nuovo il messaggio?
Questa volta, anche se James conosce a perfezione la procedura di firma concordata tra Alice e Bob, non conosce il loro segreto, e dato che questo non viene inviato per posta (il famoso canale non sicuro) non ha modo di ottenerlo.
In pratica, James potrebbe provare a cambiare il testo senza cambiare la firma, ma la funzione di hash si accorgerebbe della variazione e genererebbe una firma differente. Bob avrebbe quindi un messaggio con una firma diversa da quella verificata da lui e saprebbe immediatamente che il messaggio non è “genuino”.
L’esempio per quanto scherzoso sia rende perfettamente l’idea sia del funzionamento, sia dell’importanza di questo accorgimento.
Calcolo dell’Hash
Nel nostro caso il calcolo dell’hash viene eseguito semplicemente applicando l’algoritmo SHA1 alla stringa ottenuta accodando la “secret key” (quella che nell’esempio era “Purple Rain”) al campo “data” trasmesso.
Servizio in Cloud
Il programma viene fornito come servizio in cloud accessibile tramite piattaforma web.
La sua consultazione sarà possibile tramite qualunque dispositivo (fisso o mobile) dotato di accesso al web e di un browser compatibile con i recenti standard HMTL.
Ogni utente ha accesso tramite un account personale. Il sistema di licenziamento considera solamente gli account attivi, è pertanto possibile disattivare utenze obsolete conservandone i dati.
I dati saranno conservati per la durata del servizio, alla eventuale cessazione potrà essere richieste una esportazione con tariffazione oraria.
Il canone, oltre all’accesso al sistema software, è comprensivo di:
• VM HA con funzionamento in mirroring
• Server hypervisor di proprietà
• Backups
• Disaster and recovery
• Configurazione server ottimizzata per applicativi Web 81