Научная статья на тему 'РАЗРАБОТКА АЛГОРИТМА И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СРЕДСТВА ЗАЩИТЫ ПЕРСОНАЛЬНЫХ ДАННЫХ В ОБЛАЧНЫХ ХРАНИЛИЩАХ'

РАЗРАБОТКА АЛГОРИТМА И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СРЕДСТВА ЗАЩИТЫ ПЕРСОНАЛЬНЫХ ДАННЫХ В ОБЛАЧНЫХ ХРАНИЛИЩАХ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
429
100
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
PYTHON / PYQT5 / 152-ФЗ / ЯНДЕКС.ОБЛАКО / AES / ШИФРОВАНИЕ / ХРАНЕНИЕ ДАННЫХ / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Бусенков А.А., Багажков Д.И., Чернов В.В., Панов А.И., Башмуров Н.А.

В статье была произведена разработка программного обеспечения для безопасного хранения и обработки персональных данных в облачном хранилище с локальным шифрованием. Для реализации были разработаны блок-схемы и алгоритмы работы ПО. В ПО были реализованы функции взаимодействия с облачным хранилищем - загрузка файлов, скачивание файлов, синхронизация файлов. Также реализована функция локального шифрования с использованием алгоритма шифрования AES. Разработка велась с использованием интегрированной среды разработки для языка программирования Python - PyCharm Community Edition, разработанная компанией JetBrains на основе InteliJ IDEA. Графический интерфейс реализуемого программного обеспечения разрабатывается при помощи набора расширений графического фреймворка для языка программирования Python - Qt, версии PyQt5, который также включает в себя дизайнер графического интерфейса пользователя - Qt Designer. В качестве облачного хранилища используется Яндекс.Облако.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Бусенков А.А., Багажков Д.И., Чернов В.В., Панов А.И., Башмуров Н.А.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ALGORITHM DEVELOPMENT AND SOFTWARE IMPLEMENTATION OF PERSONAL DATA PROTECTION TOOLS IN CLOUD STORAGE

In this article, we developed software for secure storage and processing of personal data in cloud storage with local encryption. Block diagrams and SOFTWARE algorithms were developed for implementation. The SOFTWARE has implemented functions for interacting with cloud storage: uploading files, downloading files, and syncing files. The local encryption function is also implemented using the AES encryption algorithm. Development was conducted using the integrated development environment for the Python programming language - PyCharm Community Edition, developed by JetBrains based on InteliJ IDEA. The graphical interface of the implemented software is developed using a set of extensions of the graphical framework for the Python programming language - Qt, version PyQt5, which also includes the graphical user interface designer - Qt Designer. Yandex.Cloud use as cloud storage.

Текст научной работы на тему «РАЗРАБОТКА АЛГОРИТМА И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СРЕДСТВА ЗАЩИТЫ ПЕРСОНАЛЬНЫХ ДАННЫХ В ОБЛАЧНЫХ ХРАНИЛИЩАХ»

Разработка алгоритма и программная реализация средства защиты персональных данных в облачных хранилищах

сч

0 сч

сч

01

о ш m

X

<

m О X X

Бусенков Алексей Александрович магистрант, Московский институт электроники и математики им. А.Н. Тихонова, Национальный исследовательский университет «Высшая школа экономики», albus.rank@yandex.ru

Багажков Дмитрий Игоревич

магистрант, кафедра «Сети связи и системы коммутации», Московский технический университет связи и информатики, dima1999_23@icloud.com

Чернов Виктор Витальевич

магистрант, кафедра «Многоканальные телекоммуникационные системы», Московский технический университет связи и информатики, chinchoppa1337@gmail.com

Панов Алексей Ильич

студент, кафедра «Теоретическая, компьютерная и экспериментальная механика», Институт информационных технологий, математики и механики, Нижегородский государственный университет им. Н.И. Лобачевского, aleks.npc459@mail.ru

Башмуров Николай Александрович

студент, кафедра «Математическое моделирование экономических процессов», Институт экономики и предпринимательства, Нижегородский государственный университет им. Н.И. Лобачевского, bashmurov.nikolai@yandex.ru

В статье была произведена разработка программного обеспечения для безопасного хранения и обработки персональных данных в облачном хранилище с локальным шифрованием. Для реализации были разработаны блок-схемы и алгоритмы работы ПО. В ПО были реализованы функции взаимодействия с облачным хранилищем - загрузка файлов, скачивание файлов, синхронизация файлов. Также реализована функция локального шифрования с использованием алгоритма шифрования AES. Разработка велась с использованием интегрированной среды разработки для языка программирования Python -PyCharm Community Edition, разработанная компанией JetBrains на основе InteliJ IDEA. Графический интерфейс реализуемого программного обеспечения разрабатывается при помощи набора расширений графического фреймворка для языка программирования Python - Qt, версии PyQt5, который также включает в себя дизайнер графического интерфейса пользователя - Qt Designer. В качестве облачного хранилища используется Яндекс.Облако.

Ключевые слова: Python, PyQT5, 152-ФЗ, Яндекс.Облако, AES, шифрование, хранение данных, программное обеспечение.

Разработка блок-схем архитектуры программного обеспечения

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

Работа программного обеспечения будет состоять из следующих этапов:

1) Вызов основного модуля программного обеспечения;

2) Установление соединения с облачным хранилищем;

3) Выбор способа взаимодействия с облачным хранилищем: вызов окна загрузки или скачивания;

4) Завершение работы с программой.

Рисунок 1 - Блок-схема разрабатываемого программного обеспечения

Этапы модуля загрузки файлов в облачное хранилище:

1) Загрузка окна выбора файла для шифрования;

2) Шифрование файла с персональными данными;

3) Загрузка шифрованного файла в облачное хранилище;

4) Завершение работы модуля загрузки.

Рисунок 2 - Блок-схема модуля шифрования и загрузки файлов в облачное хранилище

Этапы модуля скачивания файлов из облачного хранилища:

1) Проверка условия наличия ключа для дешифрования файлов;

2) Загрузка окна выбора файла в облачном хранилище для дешифрования;

3) Скачивание шифрованного файла из облачного хранилища;

4) Дешифрование файла;

5) Завершение работы модуля скачивания и дешифрования.

Рисунок 3 - Блок-схема модуля дешифрования и скачивания файлов из облачного хранилища

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СРЕДСТВА ЗАЩИТЫ ПЕРСОНАЛЬНЫХ ДАННЫХ В ОБЛАЧНЫХ ХРАНИЛИЩАХ

Описание используемых инструментов для реализации

Для реализации программного обеспечения, осуществляющего локальное шифрование и дешифрование персональных данных и реализующее доступ к облачному хранилищу, была использована интегрированная среда разработки для языка программирования Python - PyCharm Community Edition, разработанная компанией JetBrains на основе InteliJ IDEA. Данная версия среды разработки является бесплатной для личного использования. Для разработки программного обеспечения был выбран язык программирования Python. Основными причинами для выбора данного языка являются скорость выполнения программ, так как основные библиотеки Python написаны на C++, большое количество полезных библиотек для решения различных задач, переносимость на большинство операционных систем, множество источников информации о Python и простота. [4]

Графический интерфейс реализуемого программного обеспечения разрабатывается при помощи набора расширений графического фреймворка для языка программирования Python - Qt, версии PyQt5, который также включает в себя дизайнер графического интерфейса пользователя -Qt Designer. Преобразование файлов Qt Designer происходит посредством программы pyuic, которая преобразует код XML в код языка Python. [5] Невозможность изменения внешнего вида программного обеспечения в реальном времени и без преобразований является недостатком данного графического фреймворка, однако он является наиболее удобным и функциональным для выбранного языка программирования.

Для хранения персональных данных и конфиденциальной информации используется облачное хранилище Яндекс.Облако. Данное облачное хранилище обладает множеством преимуществ по сравнению с предложениями других провайдеров. Яндекс.Облако соответствует требованиям федеральным и международным регуляторам в области хранения персональных данных, в том числе имеет заключение о соответствии требованиям федерального закона №152-ФЗ «О персональных данных», соответствует требованиям «Общего регламента о защите данных» (GDPR), а также имеет сертификаты соответствия стандартам ISO и PCI DSS.[3] Яндекс.Облако обеспечивает многоуровневую защиту хранящихся данных. Обеспечивается комплексная защита инфраструктуры, аппаратура облачного хранилища располагается в собственных дата-центрах компании Яндекс, расположенных на территории России и связанных собственными каналами связи.

X X

о

го А

с.

X

го m

о

2 О

м

сч

0 сч

сч

01

о ш m

X

3

<

m О X X

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

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

Описание алгоритма шифрования AES

Для шифрования данных был выбран алгоритм Advanced Encryption Standard (AES). Данный алгоритм является симметричным блочным алгоритмом шифрования. В данной реализации используется блок размером 128 бит и ключ размером 128 бит. Данный размер ключа вполне может обеспечивать конфиденциальность и неприступность персональных данных, а также обеспечить приемлемую скорость шифрования. Также, как и в предшественнике, алгоритме DES, в AES используется несколько раундов, т.е. несколько раз повторяются примитивные операции для надежного шифрования. Для ключа размером 128 бит необходимо провести 10 раундов. [2]

В алгоритме применяются четыре примитивные операции, которые влияют на промежуточный этап шифрования.

AddRoundKeyO

Инициализация

SubBytesO

ShiftRowsO

MixColumnsQ

AddRoundKeyO

SubBytesO

ShiftRowsO

AddRoundKeyO

9 раундов

Последний раунд

Рисунок 4 - Блок-схема общего алгоритма шифрования AES

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

Вторая операция - побайтовый сдвиг ShiftRowsO. Выполняется циклический сдвиг каждой строки блока, кроме нулевой. Количество элементов сдвига увеличивается на один с номером строки, начиная с первой.

Третья операция раунда - перемешивание внутри столбцов MixColumnsO. Данная операция заключается в том, что каждая колонка промежуточного блока умножается в полях Галуа на особую матрицу размером 4х4.

Четвертая операция раунда AddRoundKeyO осуществляет исключающее «или» каждого элемента промежуточного состояния блока с соответствующим элементом промежуточного блока секретного ключа, который вычисляется каждый раунд на основе секретного ключа при помощи алгоритма. Этот алгоритм представляет собой матрицу 10 блоков, размер каждого из таких блоков совпадает с размером исходного блока данных. [7]

Четыре данных операции повторяются 10 раз и на выходе получается зашифрованный блок размером равный исходному, т. е. 128 бит. Для расшифровки блока необходимо также последовательно применить преобразования в обратном порядке. Если с тем же ключевым словом выполнить последовательность инверсных операций, то получим исходное сообщение. [6]

Основной модуль программы

В основном окне программы (Рисунок 4) на выбор пользователя предоставляется две вкладки «Загрузить» и «Скачать», содержащие краткую инструкцию по использованию выбранной функции. Во вкладке «Загрузить» пользователь имеет возможность выбрать файл для отправки в облачное хранилище с предварительным шифрованием по алгоритму AES. Во вкладке «Скачать» пользователь может получить список файлов, хранящихся в облаке и далее выбрать файл для скачивания, который будет расшифрован автоматически после того, как файл будет скачан. Также в главном окне программы присутствует меню с двумя вкладками «Файл» и «Информация». Во вкладке меню «Файл» пользователь может изменить идентификационные данные для подключения к облачному хранилищу, а также изменить ключ для шифрования данных. Далее будут рассмотрен каждый модуль программы.

Вкладка «Загрузка» состоит из нескольких элементов. Поле с краткой инструкцией для пользователя по использованию. Поле с полосой прокрутки в котором будут отображаться выбранные для

шифрования и отправки в облако файлы. В нижней части вкладки «Загрузить» находятся две кнопки управления «Выбор файла» и «Выход». Для загрузки файла в облачное хранилище необходимо выполнить несколько действий. Сначала пользователю требуется нажать на кнопку «Выбрать файл» и после появления диалогового окна выбрать файл с локального диска. Далее выбранный файл отобразится в контейнере, в котором рядом с названием файла отображается его текущий статус и кнопка для загрузки в облачное хранилище (Рисунок 7). После того как выбранный файл зашифруется, статус файла изменится на «Готов к загрузке», пользователю необходимо нажать кнопку «Загрузить». После этого статус файла изменится, что говорит пользователю о том, что выбранный файл загружен в облачное хранилище. При нажатии на кнопку «Выбрать файл» вызывается функция openf]leO (Рисунок 8), происходит загрузка дерева каталогов и файлов локального диска и вызывается диалоговое окно.

16 байт, т. е. по 128 бит. Для шифрования вызываем функцию aes128 и передаем в аргументах блок исходных данных и ключ шифрования. Если в последнем блоке будет меньше 16 байт, то пустое пространство заполняется нулями. Когда заканчивается процесс шифрования статус файла в контейнере grid меняется на «Шифрование завершено» и кнопка «Загрузить» становится активной.

Программа для шифрования данных

Файл Информация

Скачать Загрузить |

Для шифрования и загрузки файла в облачное хранилище необходимо нажать кнопку 'Выбрать файл1, выбранный файл автоматически шифруется, затем необходимо нажать кнопку 'Загрузить' рядом с нужным файлом.

3]

ЗЗЗ.рпд Идет шифрование... Загрузить |

Выбрать файл

Выход

Рисунок 6 - Основное окно программы

Путь выбранного файла на локальном диске сохраняется в переменную path. Далее в контейнер grid добавляется два текстовых поля с названием файла и статусом, а также кнопка «b» при помощи библиотеки графического интерфейса «PtQt5». Функция openfile() вызывает функцию encrypt() для шифрования выбранного файла. В функцию encrypt() (Рисунок 9) передаются путь файла, по которому выбранный файл открывается в байтовом виде. Далее создается массив crypted_data в который будут записываться блоки зашифрованных данных. Исходный файл делится на блоки по

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рисунок 7 - Выбор файла для шифрования

4*1 opervf i le( ■•■:■ L"): global count

*Coida»ue 6ii&*.cno диапоговою окна

nfil* • QtMidgets.QFil*Oiale£.OpUort*()

ИйчЬар и чврниг фай/ta

_ - QtUida^.QFiUOi^ioe-eitOpertFil««*-«^

self.openf - op«i(self .file«*«ie. "rl>"}

*C охраняем путь файла О перенечнул path, ЧТочяе сохраняем путь С словарь mpath - »«If .fil*N«*

*W доба$лре>* их в слоО сеями

self,b ■ QtNidgets.QPusheuttonf ' 3i rpyswrfc', self) self, b. ictObject Нлвс (Яг (count) )

si If, Ь, <1 ickid. t bno«.t (»1 f .edewiio*di)

1*Ь#1- MtAl ¡4rt-*n* (QtCOf* ,<Ц , AI •I')

,1лЬ»1_г * nlf)

self, 1вЬ»1_г. «tAlipiMflt (Qttore ,<?t. AligrKenter) self, 1 Jbel=2 - set Text (ox. рл th. Ьлм-паис (self, pith)) self, label. set Text ("Идет «мфрсимие...")

iOunt, 9)

"Мызявао функция шифрования self,encrypt()

Рисунок 8 - Код функции орепШе()

Когда пользователь нажимает кнопку «Загрузить» вызывается функция Bdownloаd (Рисунок 10). Эта функция устанавливает соединение с облачным хранилищем при помощи библиотеки boto3 и отправляет зашифрованный файл в облако. В случае если соединение с облаком установить не удается функция выводит пользователю текстовое сообщение QMessageBox с сообщением

х

X

о

го А с.

X

го m

о

2 О

м

CS

0

CS CS

01

о

Ш

m

X

3

<

m О X X

об ошибке. Если файл успешно загружен, меняется статус файла в контейнере grid на «Успешно загружен».

*ACi*ypt (-.>'11): ulf.b.Ht6iublid(№M)

with op*n(sclf-path, 'rfc') ас f:

(Ппмсдшшт км/ч

k*y • 4»H.t*y trypted_d»t» ■ [ ]

<~r ■ П

//Итерируемся no байта» файла

far byte i"

»выходит 6 глабмое окно через каждый проход цик/ QtHj ч . qApp , pr<x €v*nt *( ) tcup.append(b/t с )

»Вызывает функция encrypt() для шифрования i* J*.r,{i*-p) •• 1$;

crypt«d_part 1 ac-5l2S.encrypt(tM4), k<?y)

del tcep[:]

tlcjtu в блоке *e побирается 1С байт

i* в < Un(tnp) < 1«: t^ty.lpMtt ■ 16 ■ far i in ra<igc(Mpty_spaces - 1):

t c*p. appc-nd (1)

ei-ypt«l_p»i-t ■ HI 15$-»ftei-ypt k»y)

crypted_data.extend(crypted_part)

out path • ox.path,join(ox.path.dirnaB*(sclf.path),

»•К, 1*Ь*1 . f*tT(Xt { "Ии+рволми« )

self. b. »tDixabl»d(Fil») with Op*n(«vt_p*th, '.b') am ff: ii. MPite(byt»s(crypt«l_data) ]| n out_p*th selt .upatK. update({count: out.path})

Рисунок 9 - Код функции encryptQ

dfff ВЛйЯ lOftdl («if)

s о i1. s e nJen(),se с Di sabled(T rue sende- i ' i'. vnJ('. 1.1, _ ,>.tMMH {)

^Лряучрря название файла

name as.path.basename(se J■.mpath[int(sender)j)

eflpobyen загрузить файл Ö облака ÜB случае неудачи Выводится аа/иЬка try.

5]. up 1 üdd_f i 1 е(se ] г .mpathLint (senden) ]j 1 cloud!' , пате) вис apt

QtWidgets.QPtessageQox.about(seitt С".-"-j 1, 'Ha yitaaTcn загрузить :

Рисунок 10 - Код функции Bdownloads()

Л. )

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

Программа для шифрования данных

Когда пользователь закончил работу с приложением он может нажать кнопку «Выход», что вызовет функцию close (Рисунок 11). Данная функция выведет диалоговое окно типа QMessageBox с подтверждением закрытия программы. Если пользователь нажал кнопку случайно это предотвратит потерю временных данных.

d-f Ic.ri'M}

М'- i - vi:' 1 г■ сообщение i вопроса*

rptv ] 1 QtHidgft* .^tas tagpBo* - pu'^t * ? I', "йы tu-нй isi ит* ■ jl ■ j1".

- -. ioine/n потнее* xhwxVj яэогэон*:

if QtlH42ttS Qt№Mi<90> Щ

»/i .exit(ft)

Рисунок 11 - Код функции close()

Вкладка «Скачать» (Рисунок 12) состоит из тех же элементов. Поля с краткой инструкцией для пользователя по использованию. Поля с полосой прокрутки в котором будет отображаться список файлов, хранящихся на облаке. В нижней части вкладки «Скачать» находятся две кнопки управления «Синхронизация» и «Выход». Для скачивания файла с облачного хранилища и последующего

Файл Информация

Скачать | Загрузить ]

Для расшифровки и загрузки файла на локальный диск необходимо нажать кнопку 'Выбрать файл1, выбранный файл автоматически дешифруется, затем необходимо нажать кнопку 'Загрузить' рядом с нужным файлом.

"3

crypted_ll.py Готов к скачиванию Скачать

crypted_aes.py Готов к скачиванию Скачать crypted_crypted_ll.py Завершено |

Си нхрон изи ровать

Выход

Рисунок 12 - Окно программы во вкладке «Скачать»

Когда пользователь нажимает кнопку «Синхронизовать» вызывается функция synchro (Рисунок 13). Данная функция устанавливает соединение с облачным хранилищем, по указанным раннее идентификационным данным при помощи библиотеки boto3. При помощи метода list_objects получаем список файлов, хранящихся в облачном хранилище, и записываем в массив file_list. Далее имя

каждого файла добавляется в контейнер grid2 вместе со статусом состояния и кнопкой «Скачать», которые создаются при помощи графической библиотеки PyQt5.

Для скачивания требуемого файла необходимо нажать кнопку «Скачать», что вызывает функцию uploads (Рисунок 14). Данная функция вызывает диалоговое окно QFileDialog выбора директории для сохранения скачиваемого файла. Выбранная директория записывается в переменную

fileName2. Далее к облаку отправляется запрос с именем необходимого файла. Метод get_object позволяет скачать нужный файл. Если файл успешно скачан, статус состояния рядом с названием файла в контейнере grid2 меняется на «Завершено». Путь к скачанному файла сохраняется в переменную decrpath. После этого функция uploads вызывает функцию decrypt для дешифрования скачанного с облачного хранилища файла. Это меняет поле статуса label3 на «Расшифровка...».

def *ynfhro{ I- ! t} : д1оЬэ1 countS file_list = [J

»Обрабатываем ошибку если не удается установить соединение try:

МПолучСтм список &С Су. файлов но облоки

for Wey in sJ.lift.objcCtiieuCk^t^'cloudl'X'Contents4]: fSl*_lSSt-4p(»fnJ(lceyt 'Key' |)

QtWidgets.(JMessaeettox■aboutfself, "Саибка", 'На удается синхронизовать файлы. ')

¡и длм каждого файла кнопку и mfкетовые пОлн б Окне ПрОерамт/т fwr i in riin£t(len(filo_li4t)) t

bClf.bJ = QtWidgeti..QPubh&utlD»>( Чкачоть', self)

MIf,Ь2♦ S*tQbj*CtNi-*( it r (count 2 ) )

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

«If, labels « QtWi djjet s - QL ab#l ( st г (count ?} t self)

se1f.labe13.setA1iftpmwnt(QtCore.Qt.AlignCenter)

self.Iabel4 = QtWidgets.qiabel(str(eount2), self)

selГ.Idbel4.setAligneent(QlCore.Qt.AlignCeiiter)

tea f. Xibel4. frttTwt (file J lit [i])

St:if.Iilb(l3.SetTc-Jit("riiTO» к скачивании")

self.ui.gridi-addNidg^tisMf, lAbetJl, count? - Id, 0)

яр I f . ui . gridJ.addlMidRAt(^p-Lf, label 1 f count? - 1 в, 1)

self.ui.grid2.add'riidfiet(self.b2, counts 10, 2)

self.«i2path[c&unt2] = file_list[i]

^Вызываем функцию uploads ПО нажатию nО кнопку

«1 f.b2.i:lick<'d.<onrtt<t(№lf+u|)ICK>d&)

count2 +■ 1

Рисунок 13- Код функции synchro()

def uploads(self):

sender = self.sender().objectName()

#Получаем необходимый файл с облака

get_object_response = s3.get_object(Bucket=*cloudl'} Key

^Создаем диалоговое окно для выбора директории

fileName2 = QtWidgets.QFileDialog.getExistingDirectory(s

self.senderQ.setDisabled(True)

self, la bel В . 5e"tText( 'Скачивание. . . ' )

^Сохраняемфайл

if fileName2:

with open((fileName2-i-T/T + self.m2path[int(senden)]), ff.write(get_object_response['Body'].read()) self.Iabel3.setText(1 Завершено')

self.decrpath = fileName2+1/* + self.m2path[int(sender)]

#Вызываем функцию для дешифрования файла self.decrypt()

Рисунок 14- Код функции uploads()

Далее файл открывается в байтовом коде и записывается в переменную data. После этого файл разбивается на блоки по 16 байт или 128 бит. Для того чтобы основное окно программы было доступно во время дешифрования файла используется метод processEvent библиотеки Qt. Дешифрование осуществляется вызовом метода decrypt, в аргументах которого передается блок исходного файла и секретный ключ. После успешного дешифрования поле статуса label3 меняется на «Завершено».

Тестирование разработанного проекта

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

Для начала работы следует создать учетную запись в Яндекс.Облаке и создать сервисный акка-унт. Для установления соединения с облаком также необходимо создать статический ключ (Рисунок 15) для идентификации при подключении. Эти данные записываются в файл credentials, который позже считает программа.

Идентификатор ключа:

PwrAK0UcW71kNKaFQMGD

Ваш секретный ключ:

Jc2eeQ1 PUV45 F6AYnZ I m03 ru76p Fd LQ bwiqOd d M p

ф Сохраните идентификатор и ключ. После закрытия диалога значение ключа будет недоступно.

Рисунок 15 - Получение статического ключа

Далее запускаем разработанную программу и выбираем файл, который необходимо зашифровать и загрузить на облако. Выбираем файл формата рпд. Когда файл успешно зашифрован нажимаем кнопку «Загрузить» и он отправляется в облачное хранилище (Рисунок 16).

раыма для шифрования данных — □ X

Файл Информация

Скачать Загрузить j

Для шифрования и загрузки файла в облачное хранилище необходимо нажать кнопку 'Выбрать файл', выбранный файл автоматически шифруется, затем необходимо нажать кнопку "Загрузить" рядом с кужньж файлом.

Шифрование завершено

J

Быбратъ файл

х

X

о го А с.

X

го m

о

Рисунок 16 - Шифруем и отправляем файл secret.png

2 О

м

Выбранный файл успешно сохраняется в облачном хранилище (Рисунок 17).

QJ Ike фр1чграф»п

СЧ

0

СЧ

сч

01

О Ш

m

X

3

<

m

О

X X

Имя Pauwp

= cr voted_s«r«.Bng J2.33 КБ

t> Настройки табгми»

Класс Крамипмца ХоГ'ЭДное

10 июня 20» 11:27

Рисунок 17 - Зашифрованный файл в облачном хранилище

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

crypted_secret.png Похоже, формат этого файла не поддерживается.

Рисунок 18- Ошибка при открытии файла

Для того чтобы получить доступ к данному файла необходимо скачать его через разработанное программное обеспечение (Рисунок 19).

Программа для шифрования данных

Файл Информация Скачать | Загрузить |

Для расшифровки и загрузки файла на локальный диск необходимо нажать кнопку 'Выбрать файл", выбранный файл автоматически дешифруется, затеи необходимо нажать кнопку 'Загрузить' рядом с нужным файлон.

cry pted_secret. prig

zi

Си нхрон изи ро&эгть

Рисунок 19 - Вкладка «Скачать» со скачанным файлом

Теперь расшифрованный файл успешно открывается (Рисунок 20).

Рисунок 20 - Окно с расшифрованной фотографией

Заключение

В статье решены задачи по программной реализации проекта для обеспечения безопасного хранения персональных данных на облачном хранилище. Для решения этой задачи было разработано программное обеспечение на языке «Python». В качестве облачного хранилища используется «Яндекс.Облако», которое было выбрано как наиболее подходящее для решения стоящей задачи. Для построения графического интерфейса был изучен набор расширений графического фреймворка PyQt. В работе представлены принципы функционирования применённого алгоритма шифрования AES с размером блока и ключа128 бит. Проведен ряд тестовых испытаний на соответствие функционала разработанной программы требованиям, заданным при проектировании. Рассмотрены возможные угрозы и существующие способы защиты персональных данных. Рассмотрены достоинства и недостатки различных способов хранения персональных данных. Вследствие чего было выяснено, что наиболее безопасным способом хранения является локальное шифрование и хранение на защищенном облачном хранилище.

Литература

1. Бирюков А. А. Информационная безопасность: защита и нападение. 2 изд. -М.: ДМК Пресс, 2017. - 434 с.

2. Брюс Шнайдер. Прикладная криптография: Пер. с англ./Б. Шнайдер. - М.: Издательский дом «Триумф», 2002. - 610 с.

3. Закон Российской Федерации "О персональных данных" от 27.07.2006 № 152-ФЗ // Собрание законодательства Российской Федерации.

4. Марк Лутц Изучаем Python и программируем на Python. - М.: Издательский дом "Символ плюс", 2011. - 992 с.

5. Прохоренок Н. А., Дронов В. А Python 3 и PyQt5. Разработка приложений. - СПб.: БХВ-Пе-тербург, 2016. - 832 с.

6. Рябко Б. Я., Фионов А. Н. Криптографические методы защиты информации: учебное пособие. -М.: Горячая линия-Телеком, 2005. - 229 с.

7. GitHub - Skycker/AES: Encryption/decrytion according to AES(128. standart. Web: https://github.com/Skycker/AES

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

8. Regulation (EU. of the European parliament and of the council "General Data Protection Regulation" of 26.04.2016 Volume 2016/679.

Algorithm development and software implementation of personal data

protection tools in cloud storage Busenkov A.A., Bagazhkov D.I., Chernov V.V., Panov A.I., Bakhmurov N.A.

Higher school of Economics national research University, Moscow Technical University of Communications and Informatics, Nizhny Novgorod State University named after N. I. Lobachevsky In this article, we developed software for secure storage and processing of personal data in cloud storage with local encryption. Block diagrams and SOFTWARE algorithms were developed for implementation. The SOFTWARE has implemented functions for interacting with cloud storage: uploading files, downloading files, and syncing files. The local encryption function is also implemented using the AES encryption algorithm. Development was conducted using the integrated development environment for the Python programming language -PyCharm Community Edition, developed by JetBrains based on InteliJ IDEA. The graphical interface of the implemented software is developed using a set of extensions of the graphical framework for the Python programming language - Qt, version PyQt5, which also includes the graphical user interface designer - Qt Designer. Yandex.Cloud use as cloud storage.

Keywords: Python, PyQT5, 152-FZ, Yandex.Cloud, AES, encryption, data storage, software

References

1. Biryukov A. A. Information security: protection and attack. 2nd ed. -M .:

DMK Press, 2017 .-- 434 p.

2. Bruce Schneider. Applied Cryptography: Per. from English / B. Schneider.

- M .: Publishing house "Triumph", 2002. - 610 p.

3. Law of the Russian Federation "On Personal Data" dated July 27, 2006 No.

152-FZ // Collected Legislation of the Russian Federation.

4. Mark Lutz Learning Python and programming in Python. - M .: Symbol Plus

Publishing House, 2011. - 992 p.

5. Prokhorenok N. A., Dronov V. A Python 3 and PyQt5. Application

Development. - SPb .: BHV-Petersburg, 2016 .-- 832 p.

6. Ryabko B. Ya., Fionov AN Cryptographic methods of information

protection: a tutorial. - M .: Hot line-Telecom, 2005 .-- 229 p.

7. GitHub - Skycker / AES: Encryption / decrytion according to AES

(128.standart.Web: https://github.com/Skycker/AES

8. Regulation (EU. Of the European parliament and of the council "General

Data Protection Regulation" of 26.04.2016 Volume 2016/679.

X X

o

OD A c.

X

OD m

o

2 O

ho

i Надоели баннеры? Вы всегда можете отключить рекламу.