L'azienda Kudelski Security, specializzata in audit di sicurezza, ha pubblicato il file system Oramfs con un'implementazione della tecnologia ORAM (Oblivious Random Access Machine), che maschera il modello di accesso ai dati. Il progetto ha proposto un modulo FUSE per Linux con un layer di file system che non consente di monitorare la struttura delle operazioni di scrittura e lettura. Il codice di Oramfs è scritto in Rust e distribuito con licenza GPLv3.
La tecnologia ORAM prevede la creazione di un ulteriore strato oltre alla crittografia, che impedisce di determinare la natura dell'attività attuale durante l'interazione con i dati. Ad esempio, nel caso si applichi la crittografia per il deposito dei dati presso un servizio esterno, i proprietari di questo 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 riguardo quali parti del file system vengono accessibili e quale operazione specifica viene eseguita (lettura o scrittura).
Oramfs offre un sistema di file layer universale che semplifica l'organizzazione dello storage su qualsiasi storage esterno. I dati vengono salvati in forma criptata con la possibilità opzionale di autenticazione. Per la crittografia possono essere utilizzati algoritmi come ChaCha8, AES-CTR e AES-GCM. Le regole di accesso in scrittura e lettura sono nascoste utilizzando lo schema Path ORAM. In futuro è prevista l'implementazione di altri schemi, ma al momento lo sviluppo è ancora in fase prototipale e non è consigliato per l'uso in sistemi produttivi.
Oramfs può essere utilizzato con qualsiasi FS e non dipende dal tipo di archiviazione esterna destinata: è possibile sincronizzare file con qualsiasi servizio che può essere montato come una 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 dello spazio di archiviazione non è fissa e, se necessario, la dimensione di ORAM può aumentare dinamicamente.
La configurazione di Oramfs si riduce alla definizione di due directory: pubblica e privata, che fungono da server e del client. La directory pubblica può essere qualsiasi cartella nel filesystem locale, collegata a storage esterni tramite montaggio attraverso SSHFS, FTPFS, Rclone e qualsiasi altro modulo FUSE. La directory privata è fornita dal modulo FUSE di Oramfs ed è destinata al lavoro diretto con i file archiviati in ORAM. Nella directory pubblica viene posizionato un file immagine di ORAM. Qualsiasi operazione con la directory privata si riflette nello stato di questo file immagine, ma questo file appare per un osservatore esterno come una scatola nera, le cui modifiche non possono essere associate all'attività nella directory privata, inclusa l'impossibilità di determinare se è stata eseguita un'operazione di scrittura o lettura.
Oramfs può essere applicato in settori in cui è necessario raggiungere il massimo livello di riservatezza e si può sacrificare la performance. Le prestazioni diminuiscono poiché ogni operazione con l'archiviazione, comprese le operazioni di lettura dei dati, risultano in una ricostruzione dei blocchi nell'immagine FS. Ad esempio, la lettura di un file di 10 MB richiede circa 1 secondo, e 25 MB – 3 secondi. Scrivere 10 MB richiede 15 secondi, mentre 25 MB – 50 secondi. Tuttavia, Oramfs è circa 9 volte più veloce nella lettura e 2 volte più veloce nella scrittura rispetto al file system UtahFS, sviluppato da Cloudflare e che supporta opzionalmente la modalità ORAM.
Fonte: opennet.ru
