Компания Kudelski Security, специализирующаяся на проведении аудита безопасности, опубликовала файловую систему Oramfs с реализацией технологии ORAM (Oblivious Random Access Machine), маскирующей характер доступа к данным (data access pattern). Проектом предложен FUSE-модуль для Linux с реализацией слоя ФС, не позволяющего отследить структуру операций записи и чтения. Код Oramfs написан на языке Rust и распространяется под лицензий GPLv3.
Технология ORAM подразумевает создание ещё одного слоя помимо шифрования, не позволяющего определить характер текущей активности при работе с данными. Например, в случае применения шифрования при хранении данных в стороннем сервисе, владельцы данного сервиса не могут узнать сами данные, но могут определить к каким блокам осуществляется обращение и какие выполняются операции. ORAM скрывает информацию о том к каким частям ФС производится доступ и какая именно операция выполняется (чтение или запись).
Oramfs предоставляет универсальную файловую систему-прослойку, позволяющую упростить организацию хранения данных на любых внешних хранилищах. Данные сохраняются в зашифрованном виде c опциональной возможностью проверки подлинности. Для шифрования могут использоваться алгоритмы ChaCha8, AES-CTR и AES-GCM. Закономерности при доступе на запись и чтение скрываются с использованием схемы Path ORAM. В будущем намечена реализация и других схем, но в текущем виде разработка пока находится на стадии прототипа, который не рекомендуется использовать в рабочих системах.
Oramfs может использоваться с любыми ФС и не зависит от типа целевого внешнего хранилища – возможна синхронизация файлов в любой сервис, который можно примонтировать в форме локального каталога (SSH, FTP, Google Drive, Amazon S3, Dropbox, Google Cloud Storage, Mail.ru Cloud, Яндекс.Диск и другие сервисы, поддерживаемые в rclone или для которых имеются FUSE-модули для монтирования). Размер хранилища не фиксирован и при необходимости дополнительного пространства размер ORAM может динамически увеличиваться.
Настройка Oramfs сводится к определению двух каталогов – публичного и приватного, которые выполняют роль сервера и клиента. Публичный каталог может быть любой директорией в локальной ФС, которая связана с внешними хранилищами путём их монтирования через SSHFS, FTPFS, Rclone и любые другие FUSE-модули. Приватный каталог предоставляется FUSE-модулем Oramfs и предназначен для непосредственной работы с файлами, хранимыми в ORAM. В публичном каталоге размещается файл с образом ORAM. Любая операция с приватным каталогам отражается на состоянии этого файла-образа, который выглядит для внешнего наблюдателя как чёрный ящик, изменения в котором невозможно ассоциировать с изменениями в приватном каталоге.
Oramfs может применяться в областях, в которых необходимо добиться наивысшего уровня конфиденциальности и можно пожертвовать производительностью. Производительность снижается так как каждая операция с хранилищем, в том числе операции чтения данных, приводят к перестроению блоков в образе ФС. Например, чтение файла размером 10МБ занимает около 1 секунды, а 25МБ – 3 сек. Запись 10 МБ занимает 15 секунд, а 25МБ – 50 секунд. При этом Oramfs примерно в 9 раз быстрее при чтении и в 2 раза быстрее при записи по сравнению с файловой системой UtahFS, развиваемой компанией Cloudflare и опциональньно поддерживающей режим ORAM.