L'azienda Kudelski Security, specializzata nella sicurezza informatica, ha pubblicato il file system Oramfs che implementa la tecnologia ORAM (Oblivious Random Access Machine), mascherando il modello di accesso ai dati. Il progetto offre un modulo FUSE per Linux con un livello di FS che impedisce il tracciamento della struttura delle operazioni di scrittura e lettura. Il codice di Oramfs è scritto in Rust ed è distribuito sotto licenza GPLv3.
La tecnologia ORAM prevede la creazione di un ulteriore livello oltre la crittografia, che impedisce di determinare l'attività corrente durante l'interazione con i dati. Ad esempio, nel caso venga utilizzata la crittografia per l'archiviazione dei dati in un servizio esterno, i proprietari di quel servizio non possono conoscere i dati stessi, ma possono determinare a quali blocchi viene effettuato l'accesso e quali operazioni vengono eseguite. ORAM nasconde informazioni su quali parti del FS vengono accedute e quale operazione viene eseguita (lettura o scrittura).
Oramfs fornisce un file system intermedio universale, permettendo di semplificare l'organizzazione dello storage dei dati su qualsiasi archivio esterno. I dati vengono memorizzati in forma crittografata con un'opzione per la verifica dell'autenticità. I metodi di crittografia utilizzabili includono ChaCha8, AES-CTR e AES-GCM. Le regolarità nell'accesso in scrittura e lettura vengono celate utilizzando lo schema Path ORAM. In futuro è prevista l'implementazione di altri schemi, ma nella forma attuale lo sviluppo è ancora in fase di prototipo, non raccomandato per l'uso in sistemi produttivi.
Oramfs può essere utilizzato con qualsiasi FS e non dipende dal tipo di archivio esterno. È possibile sincronizzare file con qualsiasi servizio che può essere montato sotto forma di directory locale (SSH, FTP, Google Drive, Amazon S3, Dropbox, Google Cloud Storage, Mail.ru Cloud, Yandex.Disk e altri servizi supportati in rclone o per i quali sono disponibili moduli FUSE per il montaggio). La dimensione dell'archivio non è fissa e, se necessario, la dimensione di ORAM può aumentare dinamicamente.
La configurazione di Oramfs consiste nella definizione di due directory — pubblica e privata, che fungono da server e client. Il catalogo pubblico può essere qualsiasi directory nel file system locale, collegata a archivi esterni tramite il loro montaggio attraverso SSHFS, FTPFS, Rclone e qualsiasi altro modulo FUSE. La directory privata è fornita dal modulo FUSE Oramfs ed è destinata al lavoro diretto con i file archiviati in ORAM. Nella directory pubblica viene collocato un file con l'immagine di ORAM. Qualsiasi operazione con la directory privata si riflette nello stato di questo file immagine, ma questo file appare a un osservatore esterno come una scatola nera, le cui modifiche non possono essere associate all'attività nella directory privata, incluso il fatto che non si può determinare se sia stata eseguita un'operazione di scrittura o lettura.
Oramfs può essere utilizzato in ambiti in cui è necessario raggiungere il massimo livello di riservatezza e si può sacrificare la performance. Le prestazioni diminuiscono poiché ogni operazione con l'archivio, comprese le operazioni di lettura dei dati, comporta la ricostruzione dei blocchi nell'immagine del file system. Ad esempio, la lettura di un file di 10 MB richiede circa 1 secondo, mentre quella di 25 MB - 3 secondi. La scrittura di 10 MB richiede 15 secondi, mentre quella di 25 MB - 50 secondi. Tuttavia, Oramfs è circa 9 volte più veloce in lettura e 2 volte più veloce in scrittura rispetto al file system UtahFS, sviluppato da Cloudflare e che supporta opzionalmente la modalità ORAM.
Fonte: opennet.ru
