УДК 004

Метод изоляции конфиденциальных данных от дисковых I/O-операций

Теремов Иван Алексеевич – студент Института информационных технологий МИРЭА - Российского технологического университета.

Научный руководитель Паршин Игорь Олегович – кандидат технических наук, доцент Института информационных технологий МИРЭА - Российского технологического университета.

Аннотация: Работа посвящена методу изоляции конфиденциальных данных при файловом шифровании диска в Linux-системах. В работе описаны предпосылки к использованию ФС в ОЗУ при применении шифрования хранимых файлов. Проведен анализ существующих реализаций ФС в ОЗУ, описана логика предлагаемого метода, а также примерная последовательность операций для реализации метода в прикладном программном продукте.

Ключевые слова: конфиденциальность, защита данных, шифрование, Linux.

Введение

В настоящий момент криптостойкость современных шифров не подвергается сомнению и является более чем достаточной для защиты конфиденциальных данных от внешних угроз при грамотном решении проблемы распределения ключей, т.к. вычислительных мощностей современной техники не достаточно для подбора ключей шифрования. Как правило, в компьютерных системах данные защищаются как при передаче, так и при хранении.

При написании программы не составляет сложности реализовать процесс шифрования и дешифрования данных с дискового устройства при наличии библиотек шифрования. Тем не менее, для взаимодействия со сложными форматами файлов обычно также применяются соответствующие библиотеки, которые в большинстве своем берут операции чтения-записи  на себя, что требует поддержание файлов с открытыми данными.

Предложенный в работе метод позволяет решить данную проблему, снизив риски утечки открытых данных, и предоставить пользователю-программисту удобный инструмент защищенных временных файлов.

Файловая система в ОЗУ

Очевидным и простейшим решением поставленной во введении задачи является использование временных файлов. Ввиду того, что современные вычислительные системы (ЦОДы) могут быть развернуты децентрализовано, либо иметь удаленные дисковые массивы (т.н. дисковые фабрики) – записываемые на диск в таких системах данные могут быть прочитаны посторонним лицом или программой [7]. В данном случае использование привилегий в файловой системе также не осмысленно, т.к. доступ к данным в такой ситуации происходит на уровне ниже уровня ФС.

В основе данного метода лежит возможность создания временной файловой системы в оперативной памяти машины под управлением ОС семейства Linux, и последующее сохранение открытых данных в данной ФС. В общем случае, получить доступ к содержимому ОЗУ на физическом уровне или преодолев механизмы контроля доступа в ОС – сложнейшая задача, которую невозможно решить без прямого доступа к физическим частям системы или достаточного уровня привилегий у пользователя ОС. Таким образом, файлы с открытыми данными изолируются от операций с физическими дисками, предоставляя программисту возможность использовать файлы как обычные временные файлы на диске.

В таблице 1  представлен перечень существующих реализаций размещения файловой системы в оперативной памяти [5].

Таблица 1. Сравнение реализаций ФС в ОЗУ.

 

ramdisk

ramfs

tmpfs

Ограничение размера создаваемой ФС

+

-

+

Изменение размера ФС

+/-

+

++

Использование swap

-

-

+

Очистка неиспользуемой памяти

-

+

+

Из сравнения видно, что tmpfs является одним из самых совершенных и современных решением. Важно отметить, что tmpfs активно использует swap для сброса редко используемых данных из ОЗУ в ПЗУ с целью оптимизации, что лишает смысла использовать данное решение в контексте рассматриваемого метода изоляции. Таким образом, оптимальным решением является ramfs, который размещается только в ОЗУ, но требует от программиста контроля количества расходуемой памяти.

Блокировка файлов

Помимо изоляции открытых данных от дисковых операций с помощью описанных ранее методов «виртуальных» ФС, необходимо реализовать механизм регуляции доступа к файлам в данных ФС. Для решения данной задачи можно предложить различные методы, например, стандартные для Unix-систем права доступа к файлу. Использование данного механизма надежно регламентирует доступ к файлам и легко программируется, однако, не обладает достаточной гибкостью.

В качестве метода контроля доступа к файлам предлагается использовать мандатную блокировку с помощью системного вызова fcntl. Данный метод однозначно позволяет блокировать определенный файл, ассоциируя блокировку с i-node файла и PID процесса, из которого она вызвана [8]. Таким образом, при инициации данной блокировки файл доступен только внутри вызвавшего блокировку потока, что позволяет защитить файл от доступа как из сторонних процессов, не связанных с выполняемой программой, так и от собственных потоков выполняемой программы.

Важно отметить, что блокировка подобным образом доступна не во всех Linux-системах, и при ее использовании необходимо удостовериться, что целевая система обладает данной возможностью [8].

Для появления возможности мандатной блокировки файлов в ФС ramfs, необходимо монтировать ее с опцией -o mand [3].

Концепция использования

Для иллюстрации последовательности операций при реализации данного метода на рисунке  представлена примерная диаграмма последовательности операций по созданию временного файла. Рассмотрим три встречающихся абстракции в диаграмме:

  • RAMFSFile – класс, описывающий временный файл, а также операции чтения закрытых данных из исходного файла;
  • RAMFSInstance – класс-контейнер, обслуживающий экземпляр вир, контролирует заполнение виртуальной ФС файлами;
  • CryptoProvider – класс-интерфейс, реализующий операции симметричного шифрования при чтении исходного файла и сохранения внесенных изменений.

1

Рисунок 1. Примерная диаграмма последовательности.

Заключение

Рассмотренный в работе метод может использоваться для безопасной изоляции открытых конфиденциальных данных при FLE-типе шифрования диска. Метод позволяет избавиться от потенциально опасных дисковых операций с открытыми данными. В работе также представлена приблизительная последовательность основных операций для реализации рассматриваемого метода.

Список литературы

  1. IEEE 1003.1-2001 - IEEE Standard for IEEE Information Technology - Portable Operating System Interface (POSIX(TM)) [Электронный ресурс]. – Режим доступа: https://standards.ieee.org/standard/1003_1-2001.html (дата обращения: 18.05.2021).
  2. UML modeling tools for Business, Software, Systems and Architecture [Электронный ресурс]. – Режим доступа: https://sparxsystems.com/ (дата обращения: 17.05.2021).
  3. UNIX GEMS [Электронный ресурс]. – Режим доступа: http://unix1.jinr.ru/faq_guide/progs/tppcu/5.html (дата обращения: 24.05.2021).
  4. Реймонд, Эрик С. Искусство программирования для Unix / пер. с англ. – М.: Издательский дом «Вильямс», 2005. – С. 202. – 544 с.
  5. Использование ramdisk в Linux (ramdisk, ramfs, tmpfs) или препарирование рамдисков [Электронный ресурс]. – Режим доступа: https://www.k-max.name/linux/ramdisk-ramfs-tmpfs-in-linux/ (дата обращения: 29.05.2021).
  6. Кирх, Олаф. LINUX для профессионалов : Рук. администратора сети / Олаф Кирх, Терри Доусон; [Пер. с англ. Е. Матвеев]. - 2. изд., перераб. и доп. - СПб. [ др.] : ПИТЕР, 2001. - 494 с. : ил.
  7. Jeroen Domburg. Hard disk hacking [Электронный ресурс]. – Режим доступа: https://spritesmods.com/?art=hddhack (дата обращения: 17.05.2021).
  8. Victor Gaydov. File locking in Linux [Электронный ресурс]. – Режим доступа: https://gavv.github.io/articles/file-locks/ (дата обращения: 27.05.2021).

Интересная статья? Поделись ей с другими: