• Non ci sono risultati.

CAPITOLO 5 – PROGETTO PROTOTIPO

5.7 I REFERTI: ESPORTAZIONE ED INTEGRITA’

La visualizzazione online dei propri referti e la possibilità di effettuarne il download, comporta numerosi vantaggi per gli utenti, compreso quello di poter avere a disposizione un archivio digitale dei risultati degli esami, consultabile in qualunque momento della giornata e da qualunque dispositivo. L’utilizzo in particolare di smartphone o di supporti mobili per la memorizzazione digitale delle informazioni introduce specifici rischi, alcuni dei quali sono già stati introdotti nei capitoli precedenti. In gran parte dei casi le misure minime e obbligatorie previste dalla normativa non bastano, e pertanto si rende necessario introdurre delle misure idonee in funzione della situazione specifica e dei dispositivi coinvolti nelle operazioni. La sicurezza dei dati memorizzati in un device mobile (referti PDF in questo caso) diventa particolarmente rilevante soprattutto nei casi di accessi non autorizzati al dispositivo o al suo furto/smarrimento, e si rende pertanto indispensabile gestire e prevedere situazioni di questo tipo data la natura strettamente personale dei dati trattati. Tra le soluzioni di natura tecnologica considerate idonee e maggiormente diffuse troviamo sicuramente le misure di remote wiping, che consistono nell’attuazione di una serie di comandi che permettono di eseguire da remoto funzioni come geo-localizzazione, backup dei dati su elementi centralizzati, wiping (cancellazione) automatica dei dati, bloccaggio del dispositivo etc. Si capisce subito come una procedura di questo tipo assuma importanza nel caso in cui il dispositivo cada in mani sbagliate. La tecnologia Remote-Wipe per poter funzionare richiede ovviamente che il dispositivo sia raggiungibile in remoto, e quindi presenta una limitazione non trascurabile. Infatti non garantisce un'adeguata protezione dei dati nel caso in cui il dispositivo venga rubato e non più connesso alla rete. Un malintenzionato potrebbe facilmente rimuovere eventuali memorie di massa ed inserirle in un apposito lettore o dispositivo compatibile ed avere accesso alle informazioni.

L’implementazione del Remote-Wipe passa attraverso soluzioni fornite nativamente o installate sul dispositivo. Questo porta alla luce una seconda limitazione, ovvero la necessità dell’installazione di componenti aggiuntivi sul dispositivo facendo quindi decadere il vantaggio dell'usabilità introdotta dall'adozione di un'architettura Web-based e della compatibilità cross-device e cross-platform. Altre soluzioni possibili sono i sistemi MDM, che centralizzano la gestione dei dispositivi (anche basati su diversi sistemi operativi) grazie a funzioni come gestione di credenziali, verifica delle configurazioni, aggiornamenti remoti, gestione backup dati e limitazione delle attività (per esempio copiatura di dati aziendali o download di applicazioni). Un aspetto importante è la gestione della qualità del software, con misure sia preventive sia reattive. Le preventive comprendono, tra l’altro, il controllo dei dati in input, encryption dei dati trasmessi e memorizzati, mentre le misure reattive si basano soprattutto su sistemi di esecuzione controllata delle APP (sandboxing). In ambito mobile, il modello classico di Sandbox prevede due modi d’uso (base e privilegiato) dove le applicazioni in modalità normale non hanno accesso agli oggetti riservati a quelle in modalità privilegiata. Nei modelli più avanzati di Sandbox (per esempio iPhone) ogni applicazione può accedere a un set esclusivo di oggetti, con funzioni comuni ridotte al minimo. Nei modelli più tradizionali, il sistema operativo concede a un’applicazione l’esecuzione in modalità privilegiata previa verifica dell’autenticità tramite firma digitale. Anche la logica Sandbox dunque richiede di avere a che fare con applicazioni native. HTML5 tuttavia permette di applicare l'attributo “sandbox” a degli iframe con contenuto non attendibile, in modo da inserire alcune restrizioni ed evitare l'esecuzione di azioni dannose. La soluzione più semplice ed efficacie che è stata individuata ed adottata per garantire un certo livello di protezione dei referti eventualmente salvati nel dispositivo, prevede di fornire all’utente la possibilità di corredare di una password (da lui scelta) il file PDF all'atto del download. Questo è reso possibile utilizzando la libreria Java iText; ciò avviene dunque senza apportare modifiche al contenuto dei file memorizzati nel database e senza richiedere all'utente di installare nessun componente aggiuntivo. Nel caso in cui l'utente si dimentichi la password, può semplicemente effettuare nuovamente il download del file dal sito. Il referti sono contenuti nel database in un campo di tipo BLOB e sono disponibili sotto forma di file PDF/A, che costituisce una specifica ISO 19005-1:2005: “Document management - Electronic document file format for long-term preservation - Part 1: Use of PDF 1.4 (PDF/A-1)”. Lo standard è stato approvato nel settembre del 2005 e l’iniziativa è stata avviata dalla AIIM (Association for Information and Image Management) e dalla NPES (Association for Suppliers of Printing, Publishing and Converting Technologies). La lettera “A” in PDF/A sta per “archiviazione”; esistono molti formati elettronici e tecnologie da scegliere per l’archiviazione ma la natura proprietaria di molti di questi è uno dei più grandi svantaggi dato che essi non possono garantire la preservazione del formato per il lungo termine. In contrasto con la maggior parte dei formati di elaborazione dei testi, PDF rappresenta non solo i dati contenuti nel documento, ma lo fa anche nella forma esatta con la quale essi sono stati creati. Il file inoltre può essere visualizzato indipendentemente dalla versione dell’applicazione che lo ha generato.

Figura 47 – File PDF protetto da password.

Il caricamento e la modifica dei file per i nostri scopi, passa attraverso i seguenti step:

 estrazione del documento dal campo BLOB;

 lettura del documento tramite la classe PdfReader;

 creare un PdfStamper usando il documento e l’OutputStream;

 aggiunta della password;

 chiusura del documento.

L’estrazione dei dati dal campo BLOB avviene tramite una chiamata al database e con il comando getBlob().

String query ="SELECT FILE_REFERTO FROM REFERTI WHERE CODICE_REFERTO ="+id+""; Statement st= connection.createStatement();

rs=st.executeQuery(query); rs.next();

blob = rs.getBlob(1);

InputStream in = blob.getBinaryStream();

Il metodo setContentType() invece permette di comunicare al browser che la sequenza di byte estratta deve essere interpretata dal PDF viewer o dal PDF plug-in, in modo da consentirne un’adeguata visualizzazione all’utente.

response.setContentType("application/pdf"); OutputStream fos = response.getOutputStream();

PdfReader pdfReader = new PdfReader(in);

PdfStamper pdfStamper = new PdfStamper(pdfReader,fos);

pdfStamper.setEncryption("MIA-PASSWORD1".getBytes(),"MIA-PASSWORD2".getBytes(), PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128); pdfStamper.close(); in.close(); fos.flush(); fos.close();

Si noti che al metodo setEncryption() vengono passati diversi parametri in ingresso: i primi due argomenti sono i valori delle password in byte, il terzo argomento rappresenta i permessi forniti per l’uso/manipolazione del file, mentre l’ultimo argomento permette di impostare il tipo di algoritmo di cifratura da utilizzare. Un ulteriore livello di sicurezza sarebbe stato raggiunto con la possibilità di impostare una data di scadenza al file una volta scaricato, ma attualmente non sono disponibili librerie Open Source che supportino tale funzionalità.

CAPITOLO 6