Home Downloads Faqs Docs Links


 

---- versione preliminare ----

SharEncrypt

Guida utente

Installazione

Il programma è stato testato su Windows NT/2000/XP. Dovrebbe funzionare anche su Windows 98; comunque non è in programma supportare questa piattaforma.
Per installare il programma basta eseguire il file di setup e seguire la procedura wizard. Il setup non è invasivo: nessuno dei file installati verrà copiato nelle directory di sistema;  inoltre verranno modificate solo le seguenti chiavi del registro di Windows:

  • Key: HKEY_CURRENT_USER, Subkey: "Software\SharEncrypt 1.0"

  • Se si è scelta l'opzione "Associate ".se" and ".sep" file exstensions with this program" nell'ultimo passo del processo di installazione (scelta raccomandata):

    • Key: HKEY_CLASSES_ROOT, Subkey: ".se"

    • Key: HKEY_CLASSES_ROOT, Subkey: ".sep"

    • Key: HKEY_CLASSES_ROOT, Subkey: "SharEncryptFile"

    • Key: HKEY_CLASSES_ROOT, Subkey: "SharEncryptFile\DefaultIcon"

Queste chiavi verranno comunque tutte rimosse da un'eventuale procedura di disintallazione così da non lasciare alcuna traccia sul sistema.

A cosa serve questo programma?

SharEncrypt è un'utilità di sicurezza progettata per fornire cifratura forte di file in un ambiente condiviso. Il programma è utile in tutti quei casi in cui è necessario preservare la riservatezza dei dati tra gruppi di utenti. Un esempio pratico è dato da un gruppo di utenti divisi logicamente in gruppi ma che utilizzano la stessa rete (ad esempio una LAN aziendale). Questi utenti possono utilizzare SharEncrypt quando devono condividere dati confidenziali solo all'interno del proprio gruppo (impedendo, cioè, agli utenti degli altri gruppi di accedere al contenuto di tali dati). Un altro esempio è dato dall'utilizzo del programma in combinazione con un programma qualsiasi di file sharing (ad esempio Kazaa): solo gli utenti autorizzati possono accedere al contenuto dei file condivisi, gli altri vedono solo byte senza significato...
Sebbene il programma è ideale per gruppi di utenti, esso può essere utilizzato anche da utenti singoli come utilità di cifratura forte dei file per la protezione della privacy.
Il programma si presenta con una interfaccia grafica amichevole (spero:)) per rendere facili e veloci le operazioni di ciratura/decifratura e la gestione dei gruppi di utenti.

Ok, ma come funziona?

L'idea di base è semplice: l'utente crea una directory speciale (chiamata directory SharEncrypt) e definisce una lista di utenti destinatari associati ad essa. Da questo momento chiunque può inserire file in questa directory ma ogni file inserito verrà automaticamente cifrato in modo tale che solo gli utenti appartenenti alla lista definita in precedenza saranno in grado di decifrare tali file. SharEncrypt permette di creare differenti directory, ognuna col proprio insieme di utenti destinatari associato. Questi insiemi possono inoltre essere cambiati dinamicamente (i destinatari possono essere tolti o aggiunti all'insieme anche dopo la sua creazione). L'utente che crea la directory e gestisce l'insieme dei destinatari è detto amministratore della directory.
Sebbene l'idea sia abbastanza semplice, la sua implementazione deve essere accurata perchè il programma sia efficiente e, soprattutto, sicuro. Gli aspetti principali sono:

  1. Gli utenti devono essere identificati in modo sicuro.

  2. L' insieme delle proprietà di una directory (le credenziali dell'amministratore, l'insieme deglu utenti destinatari, la data di creazione..) devono essere visibili a tutti gli utenti i quali devono poter verificare la sua integrità in ogni momento (qualcuno cha non sia l'amministratore ha alterato queste proprietà?).

  3. L'insieme dei destinatari associato ad una directory deve poter essere modificato solo dall'amministratore.

  4. La cifratura dei file deve seguire uno schema non banale.

Questi problemi sono stati affrontati utilizzando tecniche di crittografia a chiave pubblica. Ogni utente è identificato dal proprio certificato digitale X.509 e viene utilizzato un meccanismo di firma digitale per autenticare le proprietà delle directory. Se questa roba suona nuova, quì e quì ci sono buoni punti di partenza. Inoltre si utilizzano algoritmi di hash per monitorare automaticamente eventuali cambiamenti nelle proprietà di una directory ogni volta che l' utente effuttua una cifratura di file. Tali file vengono cifrati per i destinatari appropriati utilizzando (la chiave pubblica contenuta nel) loro certificato. La libreria OpenSSL fornisce le primitive crittografiche necessarie per questi compiti. Per chi è interessato, la firma e la cifratura sono implementati utilizzano lo standard PKCS#7. Gli algoritmi simmetrici disponibili comprendono AES, DES, 3-DES, Blowfish, CAST, IDEA, RC2, RC4, RC5. Le chiavi private (utilizzate per firmare le proprietà di una directory oppure per la decifratura) possono essere di tipo RSA o DSA. Inoltre queste chiavi sono supportate indifferentemente nelle codifiche PKCS#12 (Microsoft pfx), PKCS#8 o OpenSSL.
Olte alla cifratura basata sulla tecnologia a chiave pubblica, SharEncrypt offre anche la possibilità della cifratura con password (password based encryption). In questo caso non sono necessari nè certificati nè chiavi private. L'utente digita una passphrase che verrà utilizzata per derivare la chiave segreta per cifrare/decifrare secondo la  procedura descritta nello standard PKCS#5. Questo può essere utile quando non è necessario condividere i file cifrati con altri utenti.

ATTENZIONE
Il programma non fornisce procedure per la generazione di chiavi, per la verifica dei certificati o per altri compiti tipici per una PKI: esso utilizza semplicemente oggetti preesistenti (chiavi private e certificati) senza definire strategie o policy per la loro gestione o validazione. E' ovvio che questi compiti essenziali devono essere necessariamente portati  a termine in qualche modo esterno al programma. Per un utilizzo base, ad esempio, un gruppo di utenti potrebbe affidarsi ad una società che vende certificati (ce ne sono dozzine su Internet e in molti casi i certificati sono gratuiti per uso personale) e seguire le procedure standard suggerite per la gestione e la verifica di tali certificati. I certificati di esempio utilizzati sono stati ottenuti da un paio di queste società. Un utilizzo più avanzato prevede l'integrazione di SharEncrypt all'interno di una PKI esistente con le sue policy e strategie.

Creare una nuova directory SharEncrypt

Selezionare il menù Directory > Crea Nuova. Verrà avviato un wizard di 4 passi.

  • Passo 1. Selezionare il percorso e il nome per la nuova directory SharEncrypt. Specificare solo nomi di directory non esistenti.

  • Passo 2. Il wizard chiede le credenziali dell'amministratore: la sua chiave privata e il certificato corrispondente. Se la chiave privata è cifrata (dovrebbe:)), la password di accesso verrà richiesta alla fine del processo di creazione. Le chiavi private supportate possono essere di tipo RSA o DSA nei formati PKCS#12 (pfx), PKCS#8 o OpenSSL (vedi demo). La chiave privata sarà utilizzata per firmare un file di configurazione contenente le proprietà della directory. Se la chiave privata e il certificato si trovano nello stesso file (in un file .pfx per esempio) non è necessario riempire il campo relativo al certificato.

  • Passo 3. Quì è possibile definire l'insieme degli utenti destinatari. Sono supportati i certificati X.509 codificati in binario o in PEM. Il certificato dell'amministratore di cui al passo precedente deve essere esplicitamente aggiunto qui se si desidera che faccia parte dell'insieme degli utenti destinatari. In alcune circostanze, infatti, potrebbe essere utile che l'amministratore crei e gestisca una directory senza però essere in grado di decifrare i file in essa inseriti. Per vedere i dettagli di un certificato cliccare sul bottone Dettagli (o doppio click su un file nella lista). Va notato come nessun controllo o verifica vengano effettuati sui certificati (verifica del certificato, verifica del periodo di validità, controllo delle estensioni ecc.) quindi è compito dell'utente selezionare certificati validi (in accordo alla sua policy). Vedi questo warning.

  • Passo 4. Vengono riassunte le proprietà della directory che si sta per creare. Cliccare sul bottone Fine per avviare il processo di creazione.

La directory appena creata verrà aggiunta nell'albero “Directory” nel pannello destro della finestra principale.

Controllare le proprietà di una directory

Selezionare il menù Directory >Proprietà Directory per attivare la finestra delle proprietà. Quindi (la finestra è non modale) selezionare una directory dall'albero per vederne le proprietà. Cliccare il bottone Dettagli per visualizzare i dettagli dei certificati. Ognuno dei certificati visualizzati può anche essere estratto e salvato in un file separato cliccando il bottone Estrai. La lista dei destinatari, cioè gli utenti in grado di decifrare i file inseriti nella directory, mostra solo il Common Name dei certificati di tali utenti.

Come le proprietà della directory sono protette da accessi non autorizzati
Le informazioni sulla directory vengono lette da un file chiamato ".SharEncrypt" creato dall'amministratore e posizionato nella directory stessa. Questo file contiene informazioni sensibili e solo l'amministratore dovrebbe essere in grado di modificarle. Per assicurare questo, il file viene firmato digitalmente dall'amministratore e un utente può controllarne l'integrità (cioè può controllare che nessuno abbia modificato il file se non l'amministratore) verificando la firma, salvata in un file chiamato “.SharEncrypt.sig”. Ogni volta che la finestra delle proprietà viene attivata su una particolare directory, questa firma viene automaticamente verificata. Cliccare sul bottone Verifica la firma ORA per verificare la firma esplicitamente. Se la verifica fallisce allora il file “.SharEncrypt” è stato alterato da qualcuno differente dall'amministratore. Va notato che solo la firma viene verificata, non il certificato. Per verificare quest'ultimo, si può estrarlo e procedere con le proprie strategie di verifica certificati. E' possibile controllare le proprietà della directory anche aprendo semplicemente il file “.SharEncrypt” con un editor di testo. Naturalmente in questo modo non è possibile verificarne la firma.

Note
Poichè le proprietà della directory sono lette da un file (".SharEncrypt") posizionato nella directory stessa, è possibile spostare o copiare tale file (insieme alla sua firma ".SharEncrypt.sig") in un'altra directory per trasformarla in una nuova directory SharEncrypt. Ovviamente la nuova directory avrà un nome differente da quello stabilito originariamente dall'amministratore. Questo è il motivo per il quale potrebbe succedere che il campo "Directory base" sia diverso dalla directory che si sta attualmente controllando. La scelta se considerare valide o no directory di questo tipo è lasciata all'utente.

Aggiungere e rimuovere directory

Selezionare il menù Directory >Aggiungi e selezionare la directory da aggiungere. Per rimuovere una directory basta selezionarla e attivare il menù Directory > Rimuovi. Le directory rimosse non vengono cancellate dallo hard disk ma vengono semplicemente cancellate dall'albero delle directory. L'albero può contenere sia directory normali che directory SharEncrypt. Queste ultime sono rappresentate da un icona con un piccolo lucchetto rosso (se sono stati settati i parametri per la decifratura, vedi qui) oppure giallo (se è possibile solo inserire file nella directory).

Cifrare file

Selezionare una directory SharEncrypt (luccheto giallo o rosso) dall'albero, quindi selezionare il menù Cifratura > Cifra File o, alternativamente, selezionare i file da cifrare dalla lista, cliccare col tasto destro quindi selezionare Cifra i File Selezionati in > dal menù popup e scegliere la directory destinazione tra quelle mostrate. Verrà visualizzato il dialog di cifratura; cliccare il bottone OK per avviare la cifratura. Un report con l'esito delle operazione effettuate verrà mostrato alla fine del processo. La procedura chiederà conferma prima di sovrascrivere qualunque file eventualmente già esistene. La cifrautura verrà effettuata utilizzando l'agoritmo selezionato.

Note

  • L'estensione ".se" verrà aggiunta al nome del file cifrato. Questa estensione è solo per convenienza dell'utente: i file verranno decifrati indipendentemente dalla loro estensione (per esempio un file cifrato "c:\mydoc.se" rinominato in "c:\mydoc" sarà comunque decifrato con successo).

Note sulla sicurezza

  • Se le proprietà della directory sono cambiate dall'ultima volta che l'utente le ha controllate (l'amministratore ha aggiunto nuovi utenti destinatari, qualcuno non autorizzato ha alterato le proprietà ecc.) la procedura di cifratura si interrompe automaticamente e l'utente e forzato a ricontrollare la directory prima di procedere.

  • E' opportuno considerare la funzione di cancellazione sicura dopo la cifratura di file.

Decifrare file

E' possibile decifrare file solo da una directory SharEncrypt con lucchetto rosso. Selezionare uno o più file da decifrare, quindi selezionare il menù Cifratura > Decifra o cliccare con il tasto destro sui file e selezionare Decifra. Verrà attivato il dialog per la decifratura. Selezionare la directory destinazione e cliccare OK per avviare il processo di decifratura. Verrà richiesta la password di accesso alla chiave privata.

Controllare i destinatari di un singolo file

Dal momento che l'amministratore può modificare dinamicamente la lista degli utenti destinatari associata ad una directory e poichè tale modifica non riguarda i file cifrati precedentemente in quella directory, è possibile controllare la lista dei riceventi associata ad un singolo file per vedere se si è in tale lista e quindi se si è abilitati alla decifratura. Selezionare il file, quindi attivare il menù Cifratura > Mostra utenti destinatari per questo file o, alternativamente, cliccare con il tasto destro e selezionare Mostra utenti destinatari per questo file dal menù popup.

Settare i parametri per decifrare

Per poter decifrare file da una directory SharEncrypt occorre settare la chiave privata e il certificato da utilizzare (naturalmente gli oggetti selezionati devono corrispondere ad uno dei destinatari settati per quella directory). Selezionare la directory SharEncrypt prescelta, quindi selezionare il menù Directory > Parametri per la decifratura o, alternativamente, cliccare con il tasto destro sulla directory. Selezionare la chiave privata e il certificato e premere OK. Un lucchetto rosso comparirà sulla directory.

Aggiungere e rimuovere destinatari

La lista dei destinatari può essere aggiornata (solo dall'amministratore) per aggiungere o rimuovere utenti. Selezionare la directory SharEncrypt prescelta, quindi selezionare il menù Directory > Gestion utenti o, alternativamente, cliccare con il tasto destro sulla directory. Verrà attivato il dialog per la gestione degli utenti. Aggiornare la lista e cliccare OK. Verrè richiesta la password di accesso alla chiave privata dell'amministratore, che sarà utilizzata per firmare il nuovo file delle proprietà “.SharEncrypt”.

Note

  • E' necessario selezionare almeno un utente destinatario nella lista.

Cifrare file (password based encryption)

Se non è necessario condividere i file cifrati tra più utenti, e possibile considerare l'utilizzo del metodo di cifratura con password. Con questo metodo non sono necessari nè certificati nè tantomeno chiavi private: basta solo digitare una password (da non dimenticare!!) per cifrare il file. Per usare questo modalità cliccare sul menù Cifratura > Cifra/decifra con password oppure selezionare i file da cifrare, cliccare con il tasto destro il menù popup Cifra/decifra con password. Verrà attivato il dialog per la cifratura con password. Selezionare l'operazione (cifratura/decifratura), la directory di destinazione e cliccare OK. La procedura chiederà conferma prima di sovrascrivere qualunque file eventualmente già esistente. La cifrautura verrà effettuata utilizzando l'algoritmo selezionato.

Note

  • Inserrre una password non valida durante la decifratura non provoca nessun avviso. Il file verrà processato ma il risultato non sarà ovviamente un file correttamente decifrato. Questo dipende da come e implementato il meccanismo di cifratura (vedi sotto). Non c'è modo di convalidare la password di decifratura se non quello di utilizzarla per decifrare e controllare la consistenza del file risultante.

  • L'estensione ".sep" verrà aggiunta ai nomi dei file cifrati. Anche in questo caso l'estensione è solo per convenienza dell'utente: i file verranno decifrati indipendentemente dalla loro estensione (per esempio se un file cifrato "c:\mydoc.sep" rinominato in "c:\mydoc" sarà decifrato con successo).
     

Note di sicurezza

  • La cifratura è effettuata secondo lo standard PKCS#5. In breve, la password viene utilizzata in combinazione con un algoritmo di hash per produrre la chiave segreta dell'algoritmo simmetrico che sarà effettivamente utilizzata per cifrare.

  • E' opportuno considerare la funzione di cancellazione sicura dopo la cifratura di file.

Opzioni del programma

Selezionare il menù Visualizza > opzioni per attivare il dialog delle opzioni. Il primo campo mostra una lista dalla quale selezionare l'algoritmo simmetrico per cifrare (sia per la cifratura con certificati che con password). Al momento gli algoritmi supportati sono AES, CAST, DES, DESX, IDEA, Blowfish, RC2, RC4, RC5. I nomi presenti nella lista sono autoesplicativi (dare un'occhiata qui e qui per una descrizione più dettagliata). Nel campo Text Editor è possibile selezionare il programma da utilizzare come text editor (per esempio notepad, wordpad, ultraedit...). Il campo successivo consente di scegliere il tool per la cancellazione sicura di file (vedi sotto per i dettagli). L'ultimo campo rigurda la lingua da utilizzare. Al momento sono supportati solo Italiano e Inglese. Occorre chiudere e riavviare il programma per attivare una nuova lingua.

Cancellazione sicura di file

Cifrare file non ha molto senso se i dati originali non sono rimossi con cura dal disco rigido. Questo vale ancora di più in ambienti condivisi. Il problema è che un file non viene realmente rimosso quando viene cancellato; il sistema operativo aggiorna semplicemente la sua tabella interna di file, lasciando i dati sul disco rigido finchè qualche altro file non li sovrascriva. E' quindi molto semplice recuperare questi file prima che vengano sovrascritti (ci sono decine di programmi disponibili su Internet). Il periodo di tempo in cui i file sono ancora disponibili sul disco rigido può durare anche giorni o mesi (dipende dalla grandezza del file, dall'attività del disco, dalla sua grandezza ecc.). Per questa ragione i dati devono essere rimossi in modo sicuro. Questo è un argomento vasto (ecco una lettura tecnica). In giro ci sono molti buoni programmi per questo (qui c'è uno gratuito ottimo). Per convenienza, SharEncrypt integra questa funzionalità permettendo all'utente di lanciare un tool esterno di sua scelta per la cancellazione sicura. Personalmente raccomando sdelete. E' gratuito, piccolo e sicuro. Basta scaricarlo e selezionare il menù Visualizza > Opzioni e selezionare il percorso di sdelete.exe come programma per la cancellazione sicura. Nel campo Parametri aggiuntivi per la linea di comando personalmente inserisco -p 16. Basta digitare “sdelete.exe /?” in una shell DOS per avere ulteriori informazioni su sdelete.
Una volta che il programma è stato scelto, si deve selezionare il file che si desidera cancellare quindi attivare il menù
File > Cancellazione sicura. Ad esempio, selezionando il file “C:\foo.txt”, verrà lanciato il comando " [percorso\sdelete.exe] [Parametri aggiuntivi per la linea di comando] "C:\foo.txt" ". Un nuovo processo verrà lanciato in una finestra DOS che verrà attivata. Il programma chiede conferma prima di cancellare il file.

ATTENZIONE

Questa funzionalità va utilizzata con cura. Non c'è ALCUN modo di recuperare i file cancellati.

Known bugs

  • Windows 98. Il programma sembra funzionare correttamente per quel che riguarda le sue funzionalità. Sembrano esserci comunque problemi di visualizzazione di icone...

  • TODO

  • TODO

  • ....

Demo

Nella directory SharEncrypt installata c'è una directory “Demo” che contiene chiavi private e certificati di esempio da poter utilizzare come test. Questi oggetti sono stati ottenuti con una procedura di 5 minuti da CA commerciali reali (Trust Center e Digital Signature Trust) usando il browser Internet Explorer. Dal browser questi oggetti sono poi stati esportati nella sottodirectory “Private” (la chiave privata e il certificato come file .pfx) e nella sottodirectory “CERTS” (il certificato come in formato binario in un file .der). Inoltre, questi oggetti sono stati convrtiti in altri formati (usando il tool openssl.exe ) per dimostrare come SharEncrypt possa gestirli. Il formato aggiuntivo per i certificati è il formato PEM (si veda come esempio il file CERTS\mariorossi.pem). Per la chiave privata gli altri formati sono (esempi presi dalla directory “Private\mario rossi”):
 

  1. File mariorossi.pfx: il pfx così come esportato da Explorer. Chiave privata e certificato cifrati in un PKCS#12.
  2. File mariorossi.p8.asn1. Chiave privata cifrata in standard PKCS#8.
  3. File mariorossi.p8.pem. Chiave privata cifrata in standard PKCS#8 (codificata PEM).
  4. File mariorossi.priv.pem. Chiave privata cifrata (formato OpenSSL codificata PEM).
  5. File mariorossi.priv.nopass.asn1. Chiave privata non cifrata (formato OpenSSL).
  6. File mariorossi.keyAndCert.pem. Chiave privata cifrata (formato OpenSSL codificata PEM) e certificato (codifica PEM).

La password di accesso per tutte le chiavi private è “password”.

Sviluppi futuri

Oltre a rivedere le procedure per la sicurezza, la caratteristica più interessante da implementare nel futuro consiste nell'utilizzo di chiavi private immagazzinate su dispositivi hardware (tipicamente smart card PKCS#11). Ho già dei pezzi preliminari di codice da testare, ma penso di essere ancora lontano da una versione stabile.
 

Contattare
mrusso@users.sourceforge.net

 

 

 

 


Copyright © 2004 Marco Russo. SharEncrypt project hosted by SourceForge.net Logo