УДК 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. Примерная диаграмма последовательности.
Заключение
Рассмотренный в работе метод может использоваться для безопасной изоляции открытых конфиденциальных данных при FLE-типе шифрования диска. Метод позволяет избавиться от потенциально опасных дисковых операций с открытыми данными. В работе также представлена приблизительная последовательность основных операций для реализации рассматриваемого метода.
Список литературы
- 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).
- UML modeling tools for Business, Software, Systems and Architecture [Электронный ресурс]. – Режим доступа: https://sparxsystems.com/ (дата обращения: 17.05.2021).
- UNIX GEMS [Электронный ресурс]. – Режим доступа: http://unix1.jinr.ru/faq_guide/progs/tppcu/5.html (дата обращения: 24.05.2021).
- Реймонд, Эрик С. Искусство программирования для Unix / пер. с англ. – М.: Издательский дом «Вильямс», 2005. – С. 202. – 544 с.
- Использование ramdisk в Linux (ramdisk, ramfs, tmpfs) или препарирование рамдисков [Электронный ресурс]. – Режим доступа: https://www.k-max.name/linux/ramdisk-ramfs-tmpfs-in-linux/ (дата обращения: 29.05.2021).
- Кирх, Олаф. LINUX для профессионалов : Рук. администратора сети / Олаф Кирх, Терри Доусон; [Пер. с англ. Е. Матвеев]. - 2. изд., перераб. и доп. - СПб. [ др.] : ПИТЕР, 2001. - 494 с. : ил.
- Jeroen Domburg. Hard disk hacking [Электронный ресурс]. – Режим доступа: https://spritesmods.com/?art=hddhack (дата обращения: 17.05.2021).
- Victor Gaydov. File locking in Linux [Электронный ресурс]. – Режим доступа: https://gavv.github.io/articles/file-locks/ (дата обращения: 27.05.2021).