Sei sulla pagina 1di 8

Esame di

Informatica Medica
Prof. Giuseppe Mastronardi
Corso di Laurea Specialistica in Ingegneria Elettronica SEMA Sistemi Elettronici per la Medicina e l'Ambiente

Carlo Guarnieri Cal Carducci Matricola 550590

Progetto di un Frame di Sicurezza basato su tecnologia RFID per la protezione dei dati sensibili nelle Aziende Sanitarie

I dati sensibili La protezione dei dati sensibili, cio quei dati personali privati, atti a rivelare informazioni di tipo etnico, politico, consuetudini sociali e pratiche sessuali nonch lo stato di salute, di fondamentale importanza in ambiente sanitario. Le informazioni a cui solo persone autorizzate possono accedere, come i medici in virt del rapporto di riservatezza tra medico-paziente, devono essere protette da occhi indiscreti ricorrendo a diversi stratagemmi come la crittografia o i protocolli di autenticazione. Ci nonostante queste tecnologie riescono a garantire un elevato standard di sicurezza a monte della catena informativa risultando in ogni caso di scarsa utilit a valle una volta che i dati siano stati decodificati o che l'utente sia stato autorizzato a leggerli. Ipotizzando che un medico all'inizio della sua giornata lavorativa accenda la sua workstation ed effettui il Login con successo stabilendo una connessione sicura con il database, cosa accade in seguito? L'identificazione avvenuta e a meno che la connessione non venga interrotta, il server non chieder ulteriori autenticazioni, quindi a tutti gli effetti la postazione diventa un interessante fonte di informazioni assolutamente trasparente ad ogni forma di controllo. Dovrebbe essere il medico responsabile dell'accesso ai dati, dovrebbe avere l'accortezza di disconnettersi dalla sessione ogni volta che si allontana per non lasciare la postazione senza protezione altrimenti una qualsiasi persona malintenzionata ma anche altro personale sanitario non in possesso dei privilegi necessari potranno accedervi. Tralasciando discorsi relativi alle buone norme di comportamento, bisogna riconoscere che per questioni logistiche come pu essere ad esempio un'emergenza sanitaria in cui il medico deve necessariamente allontanarsi velocemente, non possibile dare alla categoria questa responsabilit. in questa prospettiva che la tecnologia ci viene in supporto! Ricorrendo alla tecnologia RFID possibile non solo garantire un livello di sicurezza superiore tramite autenticazione combinata ( Password + Tag ), ma grazie alla modalit di rilevamento a media e lunga distanza possibile monitorare la presenza del personale sul posto di lavoro ed utilizzare quest'informazione per inibire l'accesso ai dati sensibili a livello fisico.

L'idea Si rende necessaria la creazione di un frame di sicurezza che impedisca l'accesso non autorizzato alla postazione. Vediamo quali sono i requisiti: Deve mostrarsi al momento in cui l'utente effettua il Login nella sessione per convalidare l'accesso tramite RFID Tag. Deve ricevere i Tag dal dispositivo RFID Reader secondo due modalit: rilevamento di prossimit o media-lunga distanza. Deve impedire ogni sorta di tentativo di accesso non autorizzato. Deve disconnetere la sessione in automatico nel caso in cui (nella modalit mid-long range) venga meno il rilevamento del Tag associato all'utente proprietario della sessione.

Ma gi a questo punto sorgono le prime difficolt: come fare ad avviare un software all'avvio di ogni sessione?? Una risposta potrebbe essere quella di creare un eseguibile e posizionarlo all'interno della cartella Esecuzione Automatica. Purtroppo per questa soluzione non risulta soddisfacente per due motivi: il primo che le politiche di Windows fanno si che non sia possibile impostare alcun livello di priorit per tali applicazioni rendendole di fatte le ultime ad essere avviate (portando inevitabilmente a falle nella sicurezza) e in secondo luogo la facilit con cui possono essere bypassate (basterebbe infatti eliminare il software dalla cartella in questione). La guida MSDN ci dice che possibile registrare un applicazione perch riceva Notifiche di diversa natura dal sistema operativo e questo pu tornarci utile per intercettare l'evento Login ed utilizzarlo per avviare il frame. Ma come pu un applicazione ricevere notifiche su un evento di cambio sessione prima che l'utente acceda alla sessione? La risposta utilizzando un servizio o in inglese Service come sono chiamate in Windows questo genere di applicazioni che lavorano in background oppure Daemon in ambiente Unix. Studiando un po la guida MSDN risulta evidentemente proibitivo per una persona che non sia un programmatore di alto livello avventurarsi per questa strada utilizzando un linguaggio come il C++. Risulta in ogni caso utile studiarne il funzionamento:

Aggiungendo che il ricorso alle librerie necessarie possibile solo da Windows 2000 in poi. Per fortuna all'indirizzo http://get.qt.nokia.com/qt/solutions/lgpl/ contenente una serie di librerie OpenSource sviluppate dal team Nokia Qt, esiste una dal nome QtService che permette di implementare un servizio in ambiente Qt in maniera relativamente semplice. Basta infatti darsi una lettura a qualche migliaio di righe di programmazione per trovare la chiamata a RegisterServiceCtrlHandler indicata nell'articolo precedente come la procedura che registra la funzione di Handle del servizio nel SCM Service Control Manager. infatti tramite la funzione di Handle che possiamo ricevere, tra le varie cose, notifiche dal sistema operativo. Il problema che la classe implementata dal gruppo di sviluppo utilizza RegisterServiceCtrlHandler e non la versione estesa (..Ex). Infatti questa procedura permette di registrare solo funzioni di Handle semplici che non sono pensate per le nostre esigenze:

Le procedure di risposta a notifiche come stop, start, pause, ecc.., sono virtuali pure della classe QtService, quindi devono essere ridefinite nella propria classe . La versione estesa (..Ex) della procedura di registrazione di un servizio ci permetterebbe invece di registrare al SCM un funzione di handle estesa, HandlerEx:

Questa funzione ci ritornerebbe di grande utilit al nostro scopo perch supporta dei controlli aggiuntivi nel campo dwControl rispetto alla versione base. Nel nostro caso il valore che ci interessa, come indicato nella tabella seguente, SERVICE_CONTROL_SESSIONCHANGE.

Inoltre la guida ci dice che in questo caso dwEventType contiene informazioni aggiuntive:

codificate in un messaggio di tipo WM_WTSSESSION_CHANGE:

Questa tabella mostra esattamente gli eventi che dovremmo intercettare: WTS_CONSOLE_CONNECT WTS_REMOTE_CONNECT WTS_SESSION_LOGON WTS_SESSION_UNLOCK

risultato quindi necessario in prima istanza modificare il file qt_servicewin.cpp della distribuzione opensource QtService, introducendo le correzioni opportune e avendo cura di garantire il funzionamento di base e la stabilit del pacchetto. La funzione di handle, Handler stata sostituita da HandlerEx, introducendo il codice che rileva gli eventi di interesse. Questo codice viene inviato dal SCM e intercettato dalla funzione di handle che lo riemette come ulteriore evento in maniera tale da essere ricevuto dalla routine ProcessCommand del ServiceMain e utilizzato nella maniera pi opportuna. Successivamente si reso necessario sostituire la procedura di registrazione del servizio con quella estesa. Tutte le modifiche apportate sono state segnate nel codice con la dicitura in commento //Aggiunta. In ultimo stato necessario dopo una lunghissima ricerca sui forum, dal momento che la guida MSDN non lo dice impostare un flag nel servizio SERVICE_ACCEPT_SESSIONCHANGE. Date le circa 3000 linee di tutto il progetto non qui possibile descrivere tutto il codice, che in ogni caso stato per gran parte commentato. Tutta la documentazione disponibile, i file di progetto e la distribuzione Qt sono allegate al CD nella cartella DOC. Le pagine seguenti riportano perci i FlowChart che descrivono in maniera semplificata le procedure pi importanti dei due progetti di cui composto l'applicativo. necessario specificare che da Windows Vista in poi un servizio non pu detenere la grafica perch viene eseguito su un desktop virtuale diverso. Quindi il servizio ha il compito di rilevare gli eventi di sistema utili ed eseguire una seconda applicazione (il Frame) impersonando l'utente che sta accedendo.

RFID Security System


FlowChart (1/2)

svcRFID

Buffer

rfidFRAME

Socket TCP

No

Si

Si

No

No

No

Si

Si

Progetto per l'esame di Informatica Medica di Carlo Guarnieri Cal Carducci Prof. Giuseppe Mastronardi

Buy SmartDraw!- purchased copies print this document without a watermark . Visit www.smartdraw.com or call 1-800-768-3729.

RFID Security System


FlowChart (2/2)

rfidFRAME

No defCom Si

Server TCP
Lista Utenti e relativi Tag

SecurityLogOut

CheckCode

Si

No
Lista Tag a distanza di rilevamento

svcRFID

No

No

Si

Si

Nome Utente che accede alla sessione

Progetto per l'esame di Informatica Medica di Carlo Guarnieri Cal Carducci Prof. Giuseppe Mastronardi

Si

No

Buy SmartDraw!- purchased copies print this document without a watermark . Visit www.smartdraw.com or call 1-800-768-3729.