Отправьте статью сегодня! Журнал выйдет ..., печатный экземпляр отправим ...
Опубликовать статью

Молодой учёный

Программная реализация системы дисперсного хранения конфиденциальных документов с использованием кодов Рида — Соломона

Информационные технологии
Препринт статьи
20.03.2026
4
Поделиться
Аннотация
В статье рассматривается разработанный автором программный модуль для дисперсного (распределённого) хранения конфиденциальных документов. Описываются архитектура модуля, реализация криптографической защиты на основе AES 256 GCM, механизм фрагментации данных с применением кодов Рида — Соломона и взаимодействие с различными типами хранилищ (локальная файловая система, S3 совместимые облака). Приводятся результаты тестирования, подтверждающие работоспособность и отказоустойчивость решения.
Библиографическое описание
Пеньков, С. В. Программная реализация системы дисперсного хранения конфиденциальных документов с использованием кодов Рида — Соломона / С. В. Пеньков. — Текст : непосредственный // Молодой ученый. — 2026. — № 12 (615). — URL: https://moluch.ru/archive/615/134504.


Введение

В условиях цифровой трансформации объём конфиденциальной информации, требующей защиты от несанкционированного доступа, неуклонно растёт. Традиционные централизованные хранилища уязвимы для атак и единых точек отказа. Альтернативой выступает дисперсное хранение, при котором данные шифруются, разбиваются на фрагменты и распределяются по нескольким независимым узлам. Существующие решения (Storj, IPFS, Cryptomator) обладают ограничениями: либо сложны в использовании, либо не обеспечивают встроенного шифрования, либо не поддерживают истинную распределённость.

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

Архитектура программного модуля

Модуль спроектирован по принципам объектно-ориентированного подхода и включает следующие основные компоненты, представленные на рис.1:

Упрощённая диаграмма классов программного модуля

Рис. 1. Упрощённая диаграмма классов программного модуля

– DocumentManager — отвечает за валидацию и чтение/запись файлов;

– CryptoEngine — реализует шифрование/дешифрование AES-256 в режиме GCM с выработкой ключа через PBKDF2;

– ShardingEngine — выполняет фрагментацию и сборку данных с помощью кодов Рида-Соломона (параметры N информационных и M избыточных фрагментов);

– StorageBackend — абсрактный интерфейс для различных хранилищ (локальная файловая система, S3-совместимые хранилища);

– MetadataManager — управляет сохранением метаданных документа (карта расположения фрагментов, параметры шифрования, хэши) в базе SQLite;

– RecoveryEngine — координирует процесс восстановления документа;

– MainController — обеспечивает взаимодействие между компонентами и пользовательским интерфейсом (Tkinter).

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

Реализация криптографической защиты

Для шифрования используется алгоритм AES‑256 в режиме GCM, который обеспечивает как конфиденциальность, так и аутентификацию данных [2]. Ключ формируется из мастер-пароля пользователя с помощью функции PBKDF2 (соль 16 байт, 100 000 итераций SHA‑256) [2]. Каждый документ получает уникальные соль и вектор инициализации (IV), что гарантирует отличие шифротекстов даже при одинаковых паролях.

Фрагмент кода реализации метода шифрования на Python с использованием библиотеки cryptography:

При дешифровании выполняется обратная операция с автоматической проверкой целостности.

Фрагментация с использованием кодов Рида — Соломона

Для обеспечения отказоустойчивости применяется схема избыточного кодирования (Erasure Coding). В частности, используются коды Рида — Соломона над полем Галуа GF(256), реализованные в библиотеке reedsolo [3;1]. При защите документа зашифрованные данные кодируются с добавлением M избыточных байт, после чего разбиваются на N+M фрагментов примерно равного размера. Параметры N и M могут задаваться пользователем (по умолчанию N=8, M=4). Это позволяет восстановить исходные данные при наличии любых N фрагментов [1].

На рис. 2 представлена схема процесса фрагментации и сборки:

Схема фрагментации (вверху) и восстановления (внизу)

Рис. 2. Схема фрагментации (вверху) и восстановления (внизу)

Данная реализация использует только проверенные криптографические примитивы и не содержит собственных «изобретений», что соответствует принципу «не доверяй самодельным криптоалгоритмам».

Модуль распределённого хранения

Унифицированный интерфейс StorageBackend позволяет подключать различные типы хранилищ. В текущей версии реализованы два бэкенда:

– LocalStorage — сохраняет фрагменты в локальной файловой системе, организуя иерархию подкаталогов по первым символам идентификатора фрагмента.

– S3Storage — взаимодействует с S3-совместимыми облачными хранилищами (MinIO, AWS S3 и др.) через библиотеку boto3 [4]. Для каждого фрагмента формируется ключ вида fragments/XX/fragment_id.

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

Управление метаданными

Информация о документе (идентификатор, список фрагментов с указанием бэкенда и пути, соль, IV, исходный размер, хэши фрагментов) хранится в базе данных SQLite. Использование SQLite обеспечивает атомарность операций и простоту резервного копирования. Метаданные могут быть дополнительно зашифрованы, однако в текущей версии предполагается, что доступ к файлу базы данных имеют только доверенные пользователи.

Пользовательский интерфейс и сценарии работы

Графический интерфейс построен на библиотеке Tkinter и поддерживает два основных режима: защита документа и восстановление. При защите пользователь выбирает файл, вводит пароль и при необходимости корректирует параметры N и M. Модуль генерирует уникальный идентификатор документа, который выводится на экран. При восстановлении вводится идентификатор и пароль, указывается путь для сохранения, после чего выполняется сбор фрагментов, проверка целостности и дешифрование.

Результаты тестирования

Проведено функциональное, нагрузочное и интеграционное тестирование модуля. Функциональные тесты подтвердили корректность шифрования/дешифрования и восстановления данных при различных комбинациях утраченных фрагментов. Нагрузочное тестирование (имитация работы с файлами до 100 МБ, использование 5 параллельных потоков) показало, что узким местом являются операции ввода‑вывода, а не криптографические вычисления. Время обработки документа размером 10 МБ при N=8, M=4 составило в среднем 2,3 с. (на ноутбуке с Intel i5, SSD).

Интеграционное тестирование с MinIO и AWS S3 подтвердило корректную работу с облачными хранилищами. Дополнительно проверена устойчивость к потере до M фрагментов — во всех случаях документ восстанавливался успешно.

Заключение

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

Литература:

  1. Plank J. S. Erasure Codes for Storage Systems: A Brief Primer // Usenix Magazine. — 2013. — Vol. 38, № 6. — P. 20–27.
  2. Cryptography documentation [Электронный ресурс]. — URL: https://cryptography.io/ (дата обращения: 14.03.2026).
  3. reedsolo: Reed-Solomon encoder / decoder [Электронный ресурс]. — URL: https://pypi.org/project/reedsolo/ (дата обращения: 14.03.2026).
  4. Boto3 documentation — AWS SDK for Python [Электронный ресурс]. — URL: https://boto3.amazonaws.com/ (дата обращения: 15.03.2026)
  5. ГОСТ Р 7.0.100–2018. Библиографическая запись. Библиографическое описание. Общие требования и правила составления. — М.: Стандартинформ, 2018.
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Молодой учёный №12 (615) март 2026 г.
📄 Препринт
Файл будет доступен после публикации номера

Молодой учёный