PDA

View Full Version : [ Vb.NET ] Creazione di Unità Virtuali Protette - Genymus


Genymus
18-11-2009, 00:06
Salve, volevo sapere se era possibile la creazione di unità virtuali con criptaggio dei file in tempo reale:
Vorrei creare una specie di partizione che però diventa visibile una volta che il mio programma viene avviato. I files verranno crittati e depositati in un file nell'hardisk "H" e verranno sucessivamente montati dal mio programma che li decripterà e li visualizzerà dentro l'unità virtuale creata, visibile come una partizione.

Se non è possibile farlo in Vb.Net (riconosco i problemi relativi al framework) mi è possibile programmare con c/c++, nel caso ancora non andasse bene, sono pronto a imparare qualsiasi linguaggio possa occorrere.

Grazie
Genymus

fero86
18-11-2009, 01:07
Se non è possibile farlo in Vb.Net (riconosco i problemi relativi al framework) mi è possibile programmare con c/c++, nel caso ancora non andasse bene, sono pronto a imparare qualsiasi linguaggio possa occorrere. fino a poco tempo fa ti sarebbe stato necessario scaricare il WDK (Windows Driver Kit), calcolare almeno un anno di studio personale per imparare a scrivere un driver WDM, e scrivere un driver WDM :p
attualmente invece credo che sia possibile sfruttare le API che espongono le ultime tecnologie di virtualizzazione integrate nel sistema, e se questa mia ipotesi é corretta il tutto é realizzabile tranquillamente in .NET, quindi anche in Visual Basic. ora magari do un'occhiata a MSDN.

edit - dimenticavo, il driver WDM va scritto in C.

fero86
18-11-2009, 01:14
qui c'é la documentazione delle API di Virtual PC: http://msdn.microsoft.com/en-us/library/dd796757(VS.85).aspx

ma purtroppo é molto fresca e ancora non é un granché, é solamente un reference e niente guida ne' esempi d'uso; non saprei nemmeno dove cercare i CLSID necessari per istanziare tutti quegli oggetti. peró FORSE esiste la possibilitá di fare quello che hai in mente tramite quelle API (non ci giurerei, sono solo congetture).

io comunque andrei anche adesso dritto sull'approccio del driver WDM almeno per retrocompatibilitá coi sistemi precedenti a Windows 7 (quelle API sono disponibili solo su 7).

EDIT - in realtá ora che ci penso se lavorassi in .NET dovresti creare un RCW sulla type library di quelle API e quindi non avresti bisogno dei CLSID per istanziare quegli oggetti, da codice vedresti delle vere e proprie classi da istanziare con new.

fero86
18-11-2009, 01:23
se decidessi di proseguire lungo la strada del driver WDM dovrai fare riferimento in particolare a questa sezione, "Storage Devices": http://msdn.microsoft.com/en-us/library/ms803217.aspx

un'idea potrebbe essere quella di creare un class driver per un nuovo tipo di periferica, un hard disk criptato.

un'altra strada invece potrebbe essere quella di creare un driver per un bus virtuale che accetta degli IOCTL che permettono ad un programma user-mode di montare e smontare hard disk virtuali su di esso; inoltre ogni volta che per quel bus virtuale passa un IRP che serve a leggere o a scrivere su uno di quegli hard disk tu cripti o decripti.

MarcoGG
18-11-2009, 09:49
Salve, volevo sapere se era possibile la creazione di unità virtuali con criptaggio dei file in tempo reale:
Vorrei creare una specie di partizione che però diventa visibile una volta che il mio programma viene avviato. I files verranno crittati e depositati in un file nell'hardisk "H" e verranno sucessivamente montati dal mio programma che li decripterà e li visualizzerà dentro l'unità virtuale creata, visibile come una partizione.


In pratica vuoi riscrivere in .NET una cosa come http://www.truecrypt.org/ .

Francamente non vedo il bisogno di un lavoro titanico del genere. In fondo raggiungeresti un risultato pressochè identico creando uno zip password protected che contiene files criptati ( cosa che è possibile fare in .NET senza perdere tempo con C, drivers, "cinesate" varie ), nel quale puoi aggiungere, eliminare files criptati ( esattamente come faresti con un disco virtuale ad espansione dinamica... ).

Avere un disco virtuale serve davvero se ci si mette su una Macchina Virtuale, con tanto di S.O., e dubito che tu voglia costruirti un nuovo Virtual PC... Quello che vuoi tu, alla fine, è un "serbatoio di files" protetto.

Lo stesso TrueCrypt mette in guardia l'utente, consigliandolo di non scegliere password troppo corte o banali perchè ciò espone più facilmente a crack da BruteForce. Sei esposto a cracking, tanto con il disco virtuale, quanto con lo zip protetto e i files criptati...

Questo solo per avere un'idea sulla semantica di ciò che ci si prefigge di fare... Poi, ovviamente, quale che sia la tua scelta... Happy coding ! :)

Genymus
18-11-2009, 17:22
Salve, praticamente quello che dice MarcoGG mi andrebbe più che bene, solo che l'unica applicazione che vede i file deve essere la mia... il vero problema è che i file che inserisco nello zip, devono essere a loro volta criptati, in modo che solo tramite un mio algoritmo è possibile aprirli.
C'è un modo quindi per crittare file con vb.net e poi inserirli in un archivio?

Grazie

MarcoGG
19-11-2009, 10:22
Salve, praticamente quello che dice MarcoGG mi andrebbe più che bene, solo che l'unica applicazione che vede i file deve essere la mia... il vero problema è che i file che inserisco nello zip, devono essere a loro volta criptati, in modo che solo tramite un mio algoritmo è possibile aprirli.
C'è un modo quindi per crittare file con vb.net e poi inserirli in un archivio?

Grazie

Trovi tonnellate di esempi sulla criptazione dei file in VB.NET, ad esempio qui :
http://www.codeproject.com/KB/security/EncryptFile.aspx

E anche per gestire gli archivi c'è solo l'imbarazzo della scelta :
http://www.hwupgrade.it/forum/showthread.php?t=2089141

Metti insieme le due cose e avrai quello che cerchi...

Considera inoltre che molte librerie Zip gratuite, come DotNetZip, che ti consiglio, permettono già di criptare i files contenuti, anche con algoritmi molto validi, il che ti risparmierebbe parecchio lavoro sull'implementazione del tuo algoritmo di criptazione... ;)

Genymus
19-11-2009, 17:04
Grazie mille