Клиент-серверное программное обеспечение безопасного облачного хранилища файлов
Автор: В.Е. Лебедев, А.В. Чернышова
Источник: VIII Международная научно-техническая конференции. 25 мая 2017 г. (ИУСМКМ - 2017)
с.
126-130.
Аннотация
Лебедев В.Е., Чернышова А.В. Клиент-серверное программное обеспечение безопасного облачного хранилища
файлов.
В данной работе представлен обзор существующих облачных хранилищ, поддерживающих шифрование файлов,
сформированы требования к авторскому программному продукту. Проведено проектирование и реализация авторской
программы.
Ключевые слова: облачное хранилище, шифрование, клиент, сервер, защита данных.
Постановка проблемы.
Целесообразность создания подобной системы заключается в том, что несмотря на наличие аналогов, готовые решения не удовлетворяют всем требованиям, выдвигаемым пользователями. Помимо обеспечения доступности данных в любое время и в любом месте, информация пользователя должна быть защищена от кражи/подмены. На данный момент существуют средства для реализации подобных систем, а в связи с повсеместным распространением облачных технологий подобное программное обеспечение будет востребовано [1].
Цель работы – разработка клиент-серверного приложения, реализующего функционал облачного хранилища [2], обеспечивающего защиту пользовательских данных с использованием шифрования и электронной цифровой подписи. Проектирование приложения осуществляется на основе информации, полученной при анализе существующих программ- аналогов. Для реализации будут использоваться стандартные криптографические алгоритмы.
Обзор существующих облачных хранилищ, поддерживающих шифрование пользовательских данных
Dropbox [3] — файловый хостинг компании Dropbox Inc., включающий персональное облачное хранилище, синхронизацию файлов и программу- клиент. Dropbox позволяет пользователям создать специальную папку на своих компьютерах, которую Dropbox синхронизирует таким образом, что она имеет одинаковое содержимое независимо от того, какое устройство используется для просмотра[6]. Файлы, размещённые в этой папке, также доступны через веб-сайт Dropbox и мобильные приложения. Dropbox в связке с BoxCryptor, который надежно шифрует файлы перед синхронизацией их с облаком, обеспечивает конфиденциальность данных в Dropbox. Данный сервис предлагает тарифы, представленные в таблице 1.
Таблица 1 – Размер облачного хранилища Dropbox
Ежемесячная плата | Бесплатно | $9,99 | $15 |
Объем | 2-16 ГБ | 1 ТБ | безлимит |
MEGA (MEGA Encrypted Global Access) [4] — файлообменник Кима Доткома. Открыт 19 января 2013 года. Особенностью данного сервиса является то, что Mega шифрует весь контент прямо в браузере с помощью алгоритма AES [5]. Пользователи могут передавать друг другу файлы в зашифрованном виде, при этом все данные хранятся в «облаке». Ключи доступа к файлам не публикуются в открытом доступе, а распространяются по схеме Friend-to-Friend, между доверяющими друг другу пользователями. Однако сервис критиковался экспертами по криптографии из-за фактического отсутствия доверенного объекта на стороне пользователя. Хотя шифрование происходит на стороне клиента при помощи JavaScript, этот код каждый раз заново загружается с сервера и в любой момент может быть подменен без предупреждения, например, в результате взлома сервера третьей стороной. Данный сервис предлагает тарифы, представленные в таблице 2.
Таблица 2 – Размер облачного хранилища MEGA.
Ежемесячная плата | Бесплатно | €9,99 | €19,99 | €29,99 |
Объем | 50 ГБ | 500 ГБ | 2 ТБ | 4 ТБ |
Проектирование авторской программы
Проанализировав существующие системы облачного хранения данных, оказалось, что только в MEGA реализовано шифрование файлов перед отправкой на сервер, а также BoxCrypt реализует защиту файлов перед отправкой в Dropbox.
После анализа были сформулированы следующие требования:
- клиент, реализующая управление файлами, загрузку/скачивание файлов;
- возможность структурирования файлов по папкам;
- разграничение прав доступа для разных пользователей;
- шифрование файлов перед отправкой их на сервер;
- выделение квот на загрузку файлов.
На основе описанных требований было произведено проектирование разрабатываемой системы.
На рисунке 1 представлена диаграмма вариантов использования разрабатываемого приложения.
Рисунок 1 – Диаграмма вариантов использования.
Для передачи данных используется протокол HTTP. Для обмена ключами используется собственный алгоритм. Для шифрования ключа используется алгоритм RSA [6]. Для шифрования передаваемых данных используется алгоритм AES. В качестве алгоритма электронно цифровой подписи используется DSA [7]. Спроектированная система предполагает шифрование всего трафика между клиетом и сервером. Для этого реализован алгоритм обмена ключами, вклюючающий:
- генерацию RSA-пары ключей;
- отпраку публичного ключа;
- генерацию AES-ключа для шифрования трафика;
- отпраку на клиет AES-ключа, зашифрованного открытым RSA-ключем;
- сохранение расшифрованного ключа на клиенте для последующего шифрования трафика от клиента.
Файлы перед загрузкой на сервер шифруются и хранятся на сервере в зашифрованном виде.
Разрабатываемое приложение состоит из трех частей: клиента, сервера и библиотеки, инкапсулирующей криптографические функции.
Для работы сервера была спроектирована база данных с использованием СУБД MySQL. Схема базы данных представлена на рисунке 2.
Рисунок 2 - Схема базы данных сервера.
На рисунке 3 представлен фрагмент диаграммы классов приложения, содержащий классы, обеспечивающие работу облачного хранилища и защиту данных.
Рисунок 3 – Схема базы данных сервера.
На данный момент в приложении реализованы следующие функции:
- регистрация пользователя с созданием его родительской директории;
- вход в систему с выдачей токена для последующих запросов;
- создание и работа с директориями;
- синхронизация файлов с сервером;
- загрузка файла на сервер с шифрованием;
Выводы
В результате выполнения работы был проведен обзор существующих аналогов, реализующих шифрование пользовательских файлов. Были сформулированы требования к разрабатываемому продукту. В процессе работы было проведено проектирование клиент-серверного приложения и реализация его основной функциональности. В дальнейшем планируется расширить функциональность приложения для ускорения синхронизации: переименование, перенос, копирование, удаление.
Литература
1. Онлайновые хранилища данных // ComputerBild : журнал. — 2010. — № 4.
— С. 62—67.
2. Облачное хранилище данных // Википедия — свободная энциклопедия.
[Электронный ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/Dropbox
3. Dropbox // Википедия — свободная энциклопедия. [Электронный ресурс]. –
Режим доступа:
https://ru.wikipedia.org/wiki/Dropbox
4. Mega // Википедия — свободная энциклопедия. [Электронный ресурс]. –
Режим доступа:
https://ru.wikipedia.org/wiki/Mega
5. AdvancedEncryptionStandard// Википедия [Электронный ресурс]. – Режим
доступа:
https://ru.wikipedia.org/wiki/Advanced_Encryption_Standard.
6. RSA // Википедия [Электронный ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/RSA
7. DSA // Википедия [Электронный ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/DSA