Генерация сильных ключей шифрования изображений

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 01.08.2017
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

encryptImage(params) - шифрование изображения, переданного как поле в параметре.

decryptImage(params) - расшифровка изображения, переданного как поле в параметре.

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

4.3 Реализация взаимодействия сервера с клиентом

Для взаимодействия клиента с сервером, на серверной стороне определяются следующие точки входа:

/api/v1/files - контроллер обработки запросов для работы с файлами.

GET {uuid} - запрос на получение содержимого файла по uuid. Используется для отрисовки изображений на стороне клиента.

/api/v1/encryption - контроллер обработки запросов на шифрование и расшифровку изображений.

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

POST decrypt/{uuid} - запрос на расшифровку изображения с указанным {uuid}. Расшифровка изображения выполняется в отдельном потоке, поэтому данный метод закрывает соединение как только будет запущен отдельный поток для расшифровки изображения. Все дальнейшее взаимодействие с данным методом происходит через WebSocket.

POST interrupt - останавливает все запущенные потоки генетического алгоритма.

POST generateStrongKey - генерация сильного ключа шифрования. Возвращает сгенерированный ключ заданного размера.

/ws - точка входа для обработки запросов по протоколу WebSocket.

/topic/update-decrypted-image - обработка запроса на обновление состояния расшифрованного изображения. Отправляемые данные: uuid нового расшифрованного изображения, fitness - значение фитнес функции для данного изображения, key - ключ, используемый для расшифровки изображения, epoch - номер текущей эпохи генетического алгоритма.

Реализация поддержки данного функционала на клиентской стороне состоит из нескольких частей. Во-первых, для обеспечения работы протокола WebSocket используется библиотека stomp.js, которая автоматически переводит соединение на long polling, если стандарт WebSocket не поддерживается браузером.

Во-вторых, для вызова серверных методов (encrypt, decrypt, interrupt) используется метод ajax из библиотеки jQuery. Пример кода обработки нажатия на кнопку «Зашифровать» представлен ниже:

$('#encrypt-btn').click(function () {

$.ajax({

url: '/api/v1/encryption/encrypt',

type: 'post',

data: JSON.stringify({

key: $('#key').val().trim()

}),

contentType: «application/json; charset=utf-8»,

dataType: «json»,

success: function (data) {

window.lastEncryptedImageUuid = data.encryptedImage.uuid;

loadImage(data)

}

});

});

Стоит отметить необходимость указания параметров contentType и dataType, иначе сервер не сможет корректно разобрать тело запроса.

Для подписки на обновление состояния дешифратора, используется следующий код:

function connect() {

var socket = new SockJS('/ws');

stompClient = Stomp.over(socket);

stompClient.connect({}, function (frame) {

console.log('Connected: ' + frame);

stompClient.subscribe('/topic/update-decrypted-image', function (data) {

var body = JSON.parse(data.body);

$(«#encryptedImageFitness»).text('f: ' + body.fitness + ', эпоха №' + body.epoch + ', ключ ' + body.key);

$(«#encryptedImage»).attr(«src», «/api/v1/files/» + body.uuid);

});

});

}

Благодаря выразительности языка JavaScript, данный код достаточно прост для понимания. Изначально инициируется подключение к конечной точке /ws, после чего все подключение идет через обертку StompJs. При подключении, клиент подписывается на уведомления по адресу /topic/update-decrypted-image, что позволяет клиенту обновлять расшифрованное изображение как только сервер уведомит об этом клиента.

Пример работы Системы представлен на рисунке ниже (рис. 4.3). В левой части представлено исходное изображение. В правой части представлено зашифрованное изображение. Внизу изображения представлен ключ шифрования.

Рисунок 4.3. Пример зашифрованного изображения

После нажатия на кнопку «Расшифровать» сервер запускает генетический алгоритм для расшифровки изображения. Пример расшифрованного изображения после 1377 эпох представлен на рисунке ниже (рис. 4.4).

Рисунок 4.4. Пример расшифровки изображения

Как видно на изображении выше, качество изображения значительно улучшилось, по сравнению с зашифрованным изображением. Пример полностью расшифрованного изображения после 2871 эпох представлен на рисунке ниже (рис. 4.5).

Рисунок 4.5. Пример расшифрованного изображения

На рисунке ниже (см. рис. 4.6 ) представлена статистика по количеству эпох необходимых для расшифровки изображения с ключом заданной длины. Все замеры производились на изображении размера 400x300 пикселей при размере блока 40 пикселей и размере популяции 20 особей.

Рисунок 4.6. Статистика для расшифрованных изображений

На данном графике видно, что среднее количество эпох, необходимых для расшифровки изображения растет нелинейно в зависимости от размера ключа. Однако, стоит отметить, что количество различных ключей для перестановки длины N составляет N!, что уже для 16 элементов порядка 2.09 * 1013.

4.4 Реализация модуля генерации сильных ключей шифрования

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

На стороне клиента добавить кнопку «Сгенерировать сильный ключ» и добавить обработчик на нажатие этой кнопки.

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

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

Заключение

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

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

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

Дальнейшее развитие Системы предполагает выполнение следующих задач:

Расширение списка реализованных шифров.

Оптимизация работы с изображениями для ускорения работы системы:

Параллельная обработка изображений.

Параллельная обработка блоков одного изображения.

Улучшение работы фитнес функции.

Список сокращений и условных обозначений

CBC -- Cipher block chaining -- режим работы блочного алгоритма, при котором каждый последующий блок зависит от предыдущего.

COCOMO - Constructive Cost Model - модель оценки стоимости разработки программного обеспечения, разработанная Барри Боэмом [2].

ECB -- Electronic Codebook -- режим работы блочного алгоритма шифрования, при котором каждый блок шифруется независимо от других.

RSA -- Асимметричный алгоритм шифрования. Назван так в честь авторов Rivest, Shamir и Adleman.

SSL -- Secure sockets layer -- уровень защищенных сокетов) -- криптографический протокол, обеспечивающий защищённую передачу данных в сети Интернет.

SSH -- Secure Shell -- сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений.

TLS -- Transport layer security -- безопасность транспортного уровня) -- криптографический протокол, обеспечивающий защищённую передачу данных в сети Интернет.

Библиографический список

1. PhotoDatabase [Электронный ресурс] // Домашняя страница: [сайт]. [2017]. URL: http://photodb.illusdolphin.net/ru/ (дата обращения 23.05.2017)

2. Advanced Encryption Snandard (AES) [Электронный ресурс] // Advanced Encryption Standard (AES): [сайт]. [2001]. URL: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf (дата обращения: 23.08.2007).

3. COCOMO 2 [Электронный ресурс] // COCOMO 2: [сайт]. [2015]. URL: http://www.softstarsystems.com/cocomo2.htm

4. Shannon C.E. Communication Theory of Secrecy Systems [Электронный ресурс] // Communication Theory of Secrecy Systems [сайт] URL: http://netlab.cs.ucla.edu/wiki/files/shannon1949.pdf (дата обращения: 23.08.2007).

5. Русский алфавит. [Электронный ресурс] // Частотность букв русского языка (по НКРЯ) [сайт] [2017] URL: http://www.dpva.ru/Guide/GuideUnitsAlphabets/Alphabets/FrequencyRuLetters/ (дата обращения: 23.08.2007).

6. Гарднер М. От мозаик Пенроуза к надежным шифрам. М. : Мир; 1993. 416 c.

7. Шифрование по методу магических квадратов [Электронный ресурс] // Шифрование по методу магических квадратов: [сайт] [2017] URL: http://neudoff.net/info/informatika/shifrovanie-po-metodu-magicheskix-kvadratov/ (дата обращения: 23.08.2007).

8. Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. М. : Триумф; 2003. 816 c.

9. CA:MD5and1024 - MozillaWiki [Электронный ресурс] // CA:MD5and1024 [сайт] [2017] URL: https://wiki.mozilla.org/CA:MD5and1024 (дата обращения: 23.08.2007).

10. Anatomy of a password disaster - Adobe's giant-sized cryptographic blunder -Naked Security [Электронный ресурс] // Anatomy of a password disaster [сайт]. [2017]. URL: https://nakedsecurity.sophos.com/2013/11/04/anatomy-of-a-password-disaster-adobes-giant-sized-cryptographic-blunder (дата обращения: 23.08.2007).

Приложение А

Техническое задание.

1. Общие сведения

1.1 Наименование системы

Полное наименование: Система генерации сильных ключей шифрования с использованием генетического алгоритма.

1.2 Основания для проведения работ.

Работа выполняется на основании следующих документах:

- правила подготовки курсовых и выпускных квалификационных работ студентов образовательной программы бакалавриата «Программная инженерия» по направлению подготовки 09.03.04 Программная инженерия;

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

1.3 Наименование организаций - Заказчик и разработчик

Заказчик: Кафедра ИТБ НИУ ВШЭ-Пермь.

Исполнитель: студент группы ПИ-13-1 Кучев Андрей Дмитриевич.

1.4 Плановые сроки начала и окончания работы

Плановые сроки начала: 01.02.2017.

Плановые сроки конца: 30.05.2017.

1.5 Порядок выполнения и предъявления заказчику результатов работы

Результат представляется заказчику модульно, по мере реализации определённого модуля системы. Итоговая демонстрация включает в себя документацию и работоспособную систему.

2. Назначение и цели создания системы

2.1 Назначение системы

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

2.2 Цели создания системы

Целью создания системы является изучение способов шифрования изображений.

3. Характеристика объектов автоматизации

В таблице A.1 представлены процессы, автоматизируемые разрабатываемой системой.

Таблица A.1. Процессы автоматизируемые системой

Операция

Исполнитель

Частота выполнения

Возможность автоматизации

Решение по автоматизации

Дешифрование изображения на основе генетического алгоритма

Разработчик

По требованию

Возможна

Будет автоматизировано

Генерация сильных ключей шифрования изображений

Разработчик

По требованию

Возможна

Будет автоматизировано

4. Требования к информационной системе

4.1. Требования к структуре системы

Система должна быть реализована в качестве Web-приложения. Взаимодействие между клиентом и сервером должно производиться через Web-интерфейс. На сервере должны быть реализованы следующие модули:

Дешифровка изображений.

Генерация сильных ключей шифрования изображений.

Визуализация процесса дешифрования изображений.

4.2 Требования к составу выполняемых функций

Дешифрование изображения.

Генерация сильного ключа шифрования изображения.

4.3 Требования к информационному обеспечению

4.3.1 Требования к организации входных данных

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

4.3.2 Требования к организации выходных данных

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

Требования к временным диапазонам

Требования к времени исполнения не предъявляются.

Требования к обеспечению надежного (устойчивого) функционирования программы

Надежное (устойчивое) функционирование программы должно быть обеспечено выполнением совокупности организационно-технических мероприятий, перечень которых приведен ниже:

1. Организацией бесперебойного питания технических средств.

2. Регулярным выполнением сервисного обслуживания ПЭВМ и оргтехники с учетом регламентов и стандартов, принятых на территории заказчика.

3. Регулярным выполнением требований ГОСТ 51188-98. Защита информации.

4. Проведением комплексных испытаний программных средств на наличие компьютерных вирусов.

4.3.5 Время восстановления после отказа

Время восстановления после отказа, вызванного сбоем электропитания технических средств (иными внешними факторами), не фатальным сбоем (не крахом) ОС, не должно превышать времени, необходимого на перезагрузку ОС и запуск программы.

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

5. Условия эксплуатации

Система должна использоваться на ПК с операционными системами семейства Windows.

5.1 Условия эксплуатации

См. требования к обеспечению надежного (устойчивого) функционирования программы.

5.2 Требования к численности и квалификации персонала системы

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

5.3 Требования к составу и параметрам технических средств

В минимальный состав технических средств должны входить:

1. IBM-совместимый персональный компьютер (ПЭВМ), включающий в себя:

1.1. Процессор Pentium - 4 с тактовой частотой 1.2 ГГц, не менее.

1.2. Оперативную память объемом, 1024 Mб, не менее.

1.3. Жесткий диск объемом 40 Гб, и выше.

2.Локальная сеть. Пропускная способность ЛС до 1Гб/сек.

5.4 Специальные требования

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

6. Требования к программной документации

Предварительный состав программной документации должен включать в себя:

1. техническое задание;

2. отчет о проделанной работе.

7. Состав и содержание работ по разработке системы

Разработка системы включает в себя следующие стадии (табл. A.2).

Таблица A.2. Стадии реализации проекта

Наименование стадии

Содержание работ

Анализ

Анализ предметной области, обзор аналогов.

Проектирование

Описание архитектуры системы. Выбор используемых технологий и инструментальных средств.

Разработка и тестирование

Разработка системы согласно разработанной архитектуре.

Документирование

Подготовка документации, оформление отчета.

8. Порядок контроля и приемки

8.1 Виды испытаний

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

Приложение В

Исходный код программы для анализа частотности

from pprint import pprint

TRANSLITERATION_MAP = {

'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'e', 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'i',

'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', 'ф': 'f',

'х': 'h', 'ц': 'ts', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '', 'ы': 'i', 'ь': '', 'э': 'e', 'ю': 'u', 'я': 'ya'

}

def transliterate(s: str):

return ''.join(TRANSLITERATION_MAP.get(x, '') for x in s.lower())

def encrypt(s, key):

assert len(s) == len(key), '{0} should have the length {1}, the actual length is {2}'.format(

s, str(len(key)), str(len(s)))

return ''.join(chr(ord(a) ^ ord(b)) for a, b in zip(s, key))

def decrypt(s, key):

return encrypt(s, key)

def print_encrypted_message(s):

print(''.join(str(ord(x)).rjust(4) for x in s))

def count_equal_symbols(s1, s2):

return len([x for x, y in zip(s1, s2) if x == y])

def count_max_subsequence_len(s1, s2):

max_len = 0

curr_len = 0

for x, y in zip(s1, s2):

if x == y:

curr_len += 1

else:

max_len = max(max_len, curr_len)

curr_len = 0

return max(max_len, curr_len)

Приложение С

Опросный лист для оценки количества строк кода необходимого для реализации Системы

Опросный лист

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

В данном листе перечислен ряд вопросов. Пожалуйста, внимательно ознакомьтесь с ними и запишите Вашу оценку в поле ответа.

Оцените сложность разработки ядра Системы:

Сколько строк кода необходимо для реализации алгоритма шифрования? ___

Сколько строк кода необходимо для реализации модуля работы с изображениями? ___

Сколько строк кода необходимо для реализации генетического алгоритма? ___

Сколько строк кода необходимо для реализации модуля генерации сильных ключей шифрования? ___

Оцените сложность разработки интерфейсной части Системы:

Сколько строк кода необходимо для реализации интерфейсной части? ___

Сколько строк кода необходимо для реализации взаимодействия интерфейсной части и ядра? ___

Дата проведения опроса: __.01.2017

Спасибо за участие в опросе!

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.