Реферат Отчет 97 с., 4 ч., 11 рис., 11 табл., 4 прил., 40 источников. Шифрование с возможностью поиска, зашифрованный индекс




страница6/10
Дата06.06.2016
Размер0.53 Mb.
1   2   3   4   5   6   7   8   9   10

3.Программная реализация SSE

3.1.Язык и средства разработки


В качестве языка разработки программы был выбран Java. Этот выбор обоснован следующими факторами:

  • кроссплатформенность, позволяющая в дальнейшем применить имеющиеся теоретические наработки на практике в реальной системе удаленного хранения файлов;

  • стандартные структуры данных, поддерживаемые Java, позволяют реализовать элементы SSE без необходимости реализовывать собственные методы записи и хранения информации;

  • высокоуровневость языка и наличие множества встроенных библиотек, позволяющих уменьшить количество исходного кода и время разработки;

  • наличие встроенных криптографических библиотек с понятными и простыми для использования интерфейсами.

В качестве среды разработки был выбран инструмент NetBeans IDE 1.7.3, являющийся наиболее актуальной версией программы на момент написания работы. Основным преимуществом данной среды является поддержка визуальных средств разработки графического интерфейса, значительно сокращающих время создания GUI.

3.2.Структура программы


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

Таблица 2

Классы программы

Классы GUI

Классы для индексирования

Классы для реализации SSE

  • ClientForm.java

  • ServerForm.java

  • EncryptedFilesForm.java

  • SearchResultsForm.java

  • Index.java

  • FileIndexer.java

  • SSEClient.java

  • SSEServer.java

  • EncryptedIndex.java

  • Utils.java


ClientForm.java – класс, предназначенный для отображения графического пользовательского интерфейса. С помощью этого класса отображается форма, представляющая собой клиентскую сторону взаимодействия клиента и сервера в рамках облачного сервиса. Форма содержит функциональные вкладки (JTabbedPane), каждая из которых содержит элементы управления. Окно включает следующие вкладки: Шифрование, Поиск, Модификация и О программе. ClientForm является главным классом программы и содержит объект класса ServerForm в качестве закрытого поля класса, что позволяет запускать два окна при открытии программы.

ServerForm.java – класс, предназначенный для отображения графического пользовательского интерфейса. С помощью этого класса отображается форма, представляющая собой серверную сторону взаимодействия клиента и сервера в рамках облачного сервиса. Данная форма отображает текущую активность сервера в виде статусов, отображаемых в текстовой области (JTextArea). Форма также позволяет пользователю просмотреть файлы, находящиеся на серверной стороне. Список таких файлов доступен пользователю для просмотра в форме EncryptedFilesForm, запускаемой текущей ServerForm.

EncryptedFilesForm.java – класс, предназначенный для отображение списка зашифрованных файлов, хранящихся на серверной стороне. Окно запускается классом ServerForm. Форма содержит информацию о коллекции файлов: число файлов и общий размер. Таблица (JTable), отображает следующую информацию о каждом файле:

  • название файла;

  • расширение файла;

  • размер файла.

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

SearchResultsForm.java – класс, предназначенный для отображение результатов поиска, представленных в виде списка файлов. Открывается классом ClientForm по завершении процесса поиска файлов. Форма содержит информацию о коллекции файлов: число файлов и общий размер. Таблица (JTable), отображает следующую информацию о каждом файле:

  • название файла;

  • расширение файла;

  • размер файла.

Строки таблицы кликабельны и по нажатии открывают оригинальный файл, содержащий искомые ключевые слова.

Index.java – класс, осуществляющий процесс индексирования пользовательских файлов и хранящий в себе результат. Класс формирует и хранит следующие поисковые структуры данных: индекс и обратный индекс файловой коллекции. При создании экземпляра класса на вход конструктору подается коллекция пользовательских файлов. Далее из каждого файла извлекается содержимое, на основе которого строится индекс. Непосредственно за извлечение текста из каждого файла отвечает класс FileIndexer, вызываемый классом Index.

FileIndexer.java – класс, состоящий из статических методов, каждый из которых отвечает за извлечение текста из определенного типа файлов. Класс поддерживает работу со следующими типами файлов:

  • текстовые файлы (*.txt);

  • pdf-файлы (*.pdf);

  • документы MS Word (doc, docx);

  • документы MS Excel (xls, xlsx);

  • документы MS PowerPoint (ppt, pptx);

  • аудио-файлы (*.mp3);

  • изображения (*.jpg);

  • видео (*.flv).

SSEClient.java – класс, содержащий реализацию методов SSE схемы, относящихся к действиям на клиентской стороне. Класс содержит в себе следующие методы схемы:

  • генерация секретного ключа;

  • шифрование пользовательской коллекции файлов;

  • построение зашифрованного индекса;

  • генерация поискового токена;

  • генерация токена для удаления файла;

  • генерация токена для добавления файла;

  • расшифровка файлов с помощью секретного ключа.

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

Объект класса SSEClient содержит в качестве поля экземпляр класса EncryptedIndex, создаваемый внутри класса SSEClient, который содержит в себе информацию о зашифрованном индексе.

SSEServer.java – класс, содержащий реализацию методов SSE схемы, относящихся к действиям на серверной стороне. Класс содержит в себе следующие методы схемы:

  • поиск по ключевому слову с помощью поискового токена;

  • добавление файла в зашифрованную коллекцию с помощью токена для добавления;

  • удаление файла из зашифрованной коллекции с помощью токена для удаления.

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

EncryptedIndex.java – класс, хранящий в себе информацию о зашифрованном индексе. Экземпляр класса создается внутри класса SSEClient. Конструктор экземпляра класса получает на вход размер оригинального незашифрованного индекса. Объект класса используется при записи данных в зашифрованный индекс и поддерживает следующие операции:

  • добавление ячейки в поисковый массив и массив удаления;

  • добавление записи в поисковую таблицу и таблицу удаления;

  • добавление в поисковые массив и таблицу данных о свободном узле;

  • выдача случайного незанятого номера поискового массива и массива удаления;

  • заполнение поискового массива и массива удаления случайными строками.

Utils.java – вспомогательный класс, содержащий статические методы, используемые на всех этапах работы SSE схемы. Класс содержит следующие виды вспомогательных функций:

  • генерация случайных строк на основе входного значения;

  • генерация секретного криптографического ключа;

  • симметричное шифрование файла;

  • расшифровка файла;

  • базовые операции по работе с байтовыми и битовыми массивами.
1   2   3   4   5   6   7   8   9   10


База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница