ВВЕДЕНИЕ 4
1. ОБЗОР СУЩЕСТВУЮЩИХ ПРИЛОЖЕНИЙ СИНХРОНИЗАЦИИ ДАННЫХ 6
1.1. Виды синхронизации 6
1.2. Система управления параллельными версиями CVS 7
1.3. Система управления версиями Subversion 9
1.4. Система управления версиями Git 10
1.5. Утилита для синхронизации файлов Unison 13
1.6. Приложение синхронизации данных между облачным хранилищем и
мобильным устройством FolderSync 14
1.7. Выводы 14
2. МЕТОДЫ ЗАЩИЩЕННОЙ ПЕРЕДАЧИ ДАННЫХ 16
2.1. Методы обеспечения защищенной передачи данных 16
2.2. Криптографический протокол SSL 17
2.3. Криптографический протокол TLS 18
2.4. Реализация протокола SSL в криптографической библиотеке OpenSSL. .23
2.5. Реализация SSL в .NET Framework 24
2.6. Выводы 24
3. МЕТОДЫ ОБНАРУЖЕНИЯ ИЗМЕНЕНИЙ ДАННЫХ 26
3.1. Используемые на практике методы отслеживания изменений данных 26
3.2. Вычисление хеш-кода файла 27
3.3. Выводы 30
4. РАЗРАБОТАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ 32
4.1. Возможности разработанного программного обеспечения 32
4.2. Алгоритм работы двусторонней синхронизации 32
4.3. Реализация многопользовательской обработки клиентов 38
4.4. Профили синхронизации 39
4.5. Реализация программы для ПК (серверная часть) 40
4.6. Реализация программы для мобильного устройства (клиентская часть)..52
4.7. Результаты тестирования 57
ЗАКЛЮЧЕНИЕ 58
СПИСОК ЛИТЕРАТУРЫ 60
Под синхронизацией данных понимается последовательность операций (создание, копирование, переименование, удаление) над двумя каталогами, в результате которой их структура и содержимое всех файлов становятся идентичными в соответствии с последними произведенными изменениями. Текущее состояние каждого каталога, включая все его вложенные объекты, называется репликой. Синхронизируемые каталоги могут располагаться как на одном, так и на разных устройствах. При синхронизации, помимо фиксирования факта изменения и добавления файлов, желательно также учитывать и факт удаления объекта файловой системы.
В повседневной жизни часто возникает необходимость синхронизации данных между мобильным устройством и персональным компьютером (ПК). Сегодня для этого пользователю предлагаются следующие решения:
1) приложения для синхронизации: FolderSynс, MyPhoneExplorer, BitTorrentSync;
2) облачные хранилища: Google Drive, OneDrive, DropBox.
Перечислим основные недостатки выше упомянутых решений:
• большинство приложений являются коммерческими с закрытым исходным кодом;
• отсутствие сведений о нахождении данных, хранимых в облачных хранилищах;
• существует возможность использования хранимых в «облаках» данных третьими лицами, вследствие чего снижается уровень защищенности личной информации;
• отсутствие элементов, обеспечивающих безопасную передачу данных.
В связи с этим возникает актуальность разработки программного обеспечения (ПО), реализующего синхронизацию файлов между мобильным устройством и персональным компьютером по защищенному каналу связи.
Цель работы: разработка программного обеспечения синхронизации файлов между мобильным устройством и персональным компьютером по защищенному каналу связи.
Поставленная цель потребовала решения следующих задач:
1) провести обзор существующих систем синхронизации данных;
2) провести анализ средств обеспечения защищенности канала связи;
3) разработать алгоритм двусторонней синхронизации;
4) реализовать приложение синхронизации для ПК;
5) реализовать приложение для мобильного устройства.
1. Проведен обзор существующих приложений синхронизации данных: систем контроля версий CVS, Subversion и Git, утилиты для синхронизации файлов Unison, приложения синхронизации данных между облачным хранилищем и мобильным устройством FolderSync.
2. В соответствии с необходимыми функциями и характеристиками разрабатываемого приложения, наиболее близкой является утилита Unison. Механизм сравнения хешей, используемый в системе контроля версий Git, может быть использован в разрабатываемом приложении.
3. Разработан алгоритм двусторонней синхронизации, принцип работы которого основывается на хешировании файлов синхронизируемых реплик и последующим сравнении имеющихся и вновь полученных хешей для определения операций, произведенных в реплике.
4. Разработано программное обеспечение для ПК и мобильного устройства, реализующее следующие функции:
• двусторонняя синхронизация на основе разработанного алгоритма;
• проведение операций с объектами файловой системы (удаление и создание);
• шифрование передаваемых по сети данных с помощью криптографического протокола TLS;
• предоставление пользователю возможности принятия решения о выборе направления синхронизации данных в случае конфликта (для мобильного устройства);
• обслуживание сервером нескольких подключенных мобильных устройств;
• создание, изменение и удаление профилей синхронизации.
Разработка программного обеспечения (ПО) велась с помощью системы для построения клиентских приложений Windows Presentation Foundation (WPF), фреймворка для кроссплатформенной разработки мобильных приложений Xamarin и фреймфорка .NET на языке программирования C#.
Разработанное программное обеспечение было успешно протестировано на ноутбуке с установленной операционной системой «Windows 10 Домашняя» и мобильном устройстве Asus Zenfone Go ZB500KL с установленной операционной системой Android 6.0.
Stephen Thomas. SSL and TLS Essentials. Securing the Web. — New York: Wiley Computer Publishing, 2000. — 212 с.
Ilya Grigorik. High Performance Browser Networking. — Sebastopol: O'Reilly Media, 2013. — 400 с.
Jeffrey Richter. Maarten van de Bospoort. Windows Runtime via C# — Redmond: Microsoft Press, 2013. — 295 c.
Макконнелл С. Совершенный код. — М.: Русская редакция, 2016. - 896 с.
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Д. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб: Питер, 2016. - 366 с.
Шаньгин В.Ф. Информационная безопасность. - М.: ДМК Пресс, 2017. - 702 с.
Документация сети разработчиков Microsoft [Электронный ресурс] - Режим доступа: https://msdn.microsoft.com- Заглавие с экрана - (Дата обращения: 12.06.2017).
Сайт национального открытого университета «Интуит». Курс: «Академия Microsoft: Структуры и алгоритмы компьютерной обработки данных» [Электронный ресурс] - Режим доступа:
http://www.intuit.ru/studies/courses/648/504/lecture/11467?page=1- Заглавие с экрана - (Дата обращения: 17.05.2017).
Introduction to SSL. [Электронный ресурс] - Режим доступа: https://docs.oracle.com/cd/E19396-01/817-7612/ax_ssl.html - Заглавие с экрана - (Дата обращения: 12.06.2017).
Основы работы с OpenSSL [Электронный ресурс] - Режим доступа: https://www.openssl.org- Заглавие с экрана - (Дата обращения: 13.05.2017).
Сайт платформы Xamarin [Электронный ресурс] - Режим доступа: https://www.xamarin.com- Заглавие с экрана - (Дата обращения: 21.05.2017).
12 Блог профессионального разработчика ПО Мартина Фаулера [Электронный ресурс] - Режим доступа: https://martinfowler.com- Заглавие с экрана - (Дата обращения: 22.05.2017).