Firma Kudelski Security, specjalizująca się w audycie bezpieczeństwa, opublikowała system plików Oramfs z wdrożeniem technologii ORAM (Oblivious Random Access Machine), która maskuje charakter dostępu do danych (data access pattern). Projekt oferuje moduł FUSE dla systemu Linux z implementacją warstwy FS, która uniemożliwia śledzenie struktury operacji zapisu i odczytu. Kod Oramfs został napisany w języku Rust i jest rozpowszechniany na licencji GPLv3.
Technologia ORAM zakłada wprowadzenie dodatkowej warstwy oprócz szyfrowania, która uniemożliwia określenie charakteru bieżącej aktywności przy pracy z danymi. Na przykład, w przypadku stosowania szyfrowania do przechowywania danych w zewnętrznej usłudze, właściciele tej usługi nie mają dostępu do samych danych, ale mogą określić, do których bloków są wykonywane odwołania i jakie operacje są wykonywane. ORAM ukrywa informacje o tym, do jakich części FS następuje dostęp i jaka dokładnie operacja jest realizowana (czytanie czy zapis).
Oramfs zapewnia uniwersalny system plików-przesłony, który ułatwia organizację przechowywania danych na dowolnych zewnętrznych nośnikach. Dane są przechowywane w postaci zaszyfrowanej z opcjonalną możliwością weryfikacji autentyczności. Do szyfrowania mogą być stosowane algorytmy ChaCha8, AES-CTR i AES-GCM. Dystans pomiędzy dostępem do zapisu i odczytu jest ukrywany przy użyciu schematu Path ORAM. W przyszłości planowane jest wprowadzenie innych schematów, ale w obecnej formie rozwój znajduje się na etapie prototypu, którego nie zaleca się stosować w systemach produkcyjnych.
Oramfs może być używany z dowolnymi FS i nie zależy od typu docelowego zewnętrznego nośnika — możliwa jest synchronizacja plików z dowolną usługą, którą można zamontować jako lokalny katalog (SSH, FTP, Google Drive, Amazon S3, Dropbox, Google Cloud Storage, Mail.ru Cloud, Yandex.Disk i inne usługi, które są wspierane przez rclone lub dla których istnieją moduły FUSE do montowania). Rozmiar nośnika nie jest stały i w razie potrzeby dodatkowego miejsca rozmiar ORAM może dynamicznie się powiększać.
Konfiguracja Oramfs sprowadza się do zdefiniowania dwóch katalogów — publicznego i prywatnego, które pełnią rolę serwera i klienta. Publiczny katalog może być dowolnym katalogiem w lokalnym systemie plików, który jest połączony z zewnętrznymi magazynami poprzez ich montowanie za pomocą SSHFS, FTPFS, Rclone i wszelkich innych modułów FUSE. Prywatny katalog jest udostępniany przez moduł FUSE Oramfs i jest przeznaczony do bezpośredniej pracy z plikami przechowywanymi w ORAM. W publicznym katalogu umieszczany jest plik z obrazem ORAM. Każda operacja z prywatnym katalogiem odzwierciedla stan tego pliku-obrazu, jednak plik ten wygląda dla zewnętrznego obserwatora jak czarna skrzynka, a zmiany w nim są niemożliwe do skojarzenia z aktywnością w prywatnym katalogu, w tym nie można określić, czy operacja zapisu czy odczytu została wykonana.
Oramfs może być stosowany w dziedzinach, w których konieczne jest osiągnięcie maksymalnego poziomu poufności, a wydajność może zostać poświęcona. Wydajność się obniża, ponieważ każda operacja z magazynem, w tym operacje odczytu danych, prowadzą do przebudowy bloków w obrazie systemu plików. Na przykład, odczyt pliku o wielkości 10MB zajmuje około 1 sekundy, a 25MB — 3 sekundy. Zapis 10 MB trwa 15 sekund, a 25MB – 50 sekund. Przy tym Oramfs jest około 9 razy szybszy przy odczycie i 2 razy szybszy przy zapisie w porównaniu do systemu plików UtahFS, rozwijanego przez firmę Cloudflare i opcjonalnie wspierającego tryb ORAM.
Źródło: opennet.ru
