
- •Московский Государственный Технический Университет им. Н.Э.Баумана Пояснительная записка
- •«Система разделения секрета»
- •Содержание
- •1.1 Цель
- •1.2 Формулировка проблемы
- •1.3 Функциональные требования
- •1.4 Исходные данные и результаты
- •1.5 Структура данных
- •2 Криптографические протоколы
- •2.1 Понятие криптографического протокола
- •2.2 Зачем нужны криптографические протоколы
- •2.3 Классификация
- •2.3.1 Протоколы шифрования / расшифрования
- •2.3.2 Протоколы электронной цифровой подписи (эцп)
- •2.3.3 Протоколы идентификации / аутентификации
- •2.3.4 Протоколы аутентифицированного распределения ключей
- •3 Разделение секрета
- •3.1 Простая схема контроля частей
- •3.2 Основные определения, касающиеся разделения секрета
- •4 Описание программы
- •4.1 Используемые алгоритмы
- •4.2 Описание структуры программы
- •4.3 Особенности используемых методов
- •4.4 Примечания
- •5 Заключение
- •6 Используемая литература
4.1 Используемые алгоритмы
Алгоритм создания ключа:
Соответствующие цифры двух паролей складываются по модулю 10.
первый пароль |
12345678 |
второй пароль |
36925814 |
ключ |
48260482 |
Таблица 1
:
Алгоритм шифрования ключа:
Каждая цифра ключа заменяется на установленный символ.
Алгоритм шифрования секрета:
Код каждого символа секрета увеличивается на соответствующее значение цифры ключа по круговому принципу (например, к десятому символу секрета добавляется вторая цифра ключа).
Алгоритм шифрования пути к секрету:
Над каждым символом пути проводится следующая операция:
конечный символ =(начальный символ)^(длина пути), где ^ - операция XOR.
Алгоритмы дешифрования секрета и ключа обратны алгоритмам шифрования.
4.2 Описание структуры программы
Программа содержит в себе два класса: класс игрока (HUMAN) и класс сейфа (SAVE). Класс сейфа наследует методы класса игрока. Методы класса игрока позволяют инициализировать пароли. Методы класса сейфа производят остальные действия, необходимые для шифрации и дешифрации секрета.
4.3 Особенности используемых методов
Для реализации подавления эхо-печати был написан метод getpass, который, в свою очередь, использует метод getch, подобный тому, что присутствует в заголовочном файле conio.h в операционной системе WINDOWS (используется неканонический ввод).
Шифрация\дешифрация секрета происходит «на лету»: открывается два потока, один для чтения из файла, другой – для записи. После чтения символа из первого потока, он преобразуется и сразу же записывается в другой. Тем самым заменяя прочитанный.
4.4 Примечания
В данной версии программы в качестве секрета должен быть указан файл.
Пароль должен состоять только из цифр, длина пароля – 8 символов. Любой другой пароль будет считаться ложным.
Возможна ситуация, когда во второй фазе, после дешифрации секрета, при его редактировании или просмотре, не будет закрыта программа, его редактирующая. Тогда после обратной шифрации секрета и корректного завершения программы, злоумышленник может получить доступ к информации секрета, поскольку вся информация останется отображаться в редакторе. Чтобы этого избежать всегда закрывайте сторонние программы, которые были запущены для редактирования или просмотра секрета, после необходимых манипуляций с данными секрета.
При некорректном завершении программы возможна полная потеря секрета.
Предполагается, что место хранение секрета неизменно, иначе секрет не сможет быть расшифрован.
Необходимо избегать хранения в папке, в которой расположен секрет, файла с тем же именем, что и секрет, отличающийся лишь наличием/отсутствием точки вначале имени. Иначе такой файл может быть заменен секретом в процессе пользования программой.
5 Заключение
В ходе выполнения данной курсовой работы была разработана программа на языке высокого уровня C++ в ОС Linux, функциональность которой отвечает поставленной цели: реализует криптографическую систему разделения секрета для двух участников.