- •Постановка задачи
- •Обзор современного состояния темы
- •Выбор алгоритмов и атак
- •Критерии выбора алгоритмов
- •Выбор симметричных алгоритмов шифрования
- •Выбор алгоритмов шифрования с открытым ключом
- •Выбор алгоритмов цифровой подписи
- •Выбор криптографических атак
- •Описание использованных криптографических алгоритмов
- •Симметричные алгоритмы шифрования
- •Алгоритм гост
- •Асимметричные алгоритмы шифрования
- •Алгоритмы цифровой подписи
- •Алгоритм гост
- •Описание использованных атак
- •Атака на общий модуль против алгоритмаRsa
- •Атака на выбранный шифртекст против алгоритмаRsa
- •Атака против алгоритмаDsa
- •Особенности реализации алгоритмов
- •Управление ключами
- •Генерация ключей
- •Хранение ключей
- •Длина ключа
- •Особенности реализации асимметричных алгоритмов
- •Модульная арифметика
- •Представление многозначных чисел
- •Сложение многозначных чисел
- •Умножение многозначных чисел
- •Деление многозначных чисел
- •Особенности реализации симметричных алгоритмов
- •Дополнение сообщений
- •Подключи и таблицы подстановки для алгоритмаBlowfish
- •Режим использования блочных шифров
- •Проектирование интерфейса
- •Сценарии использования программы
- •Пошаговое выполнение симметричных алгоритмов
- •Пошаговое выполнение асимметричных шифров
- •Пошаговое выполнение алгоритмов цифровой подписи
- •Демонстрация работы атак
- •Оценка скорости работы алгоритма
- •Структура диалога
- •Архитектура программы
- •Использование объектов-функций
- •Использование потоков
- •Использование генераторов ключей
- •Структура модулей
- •Заключение
- •Список литературы
Выбор алгоритмов и атак
Критерии выбора алгоритмов
Как уже сказано, главным критерием является рабочая программа курса. Дополнительными критериями выбора симметричных и асимметричных алгоритмов шифрования, а также алгоритмов цифровой подписи являются:
Распространенность и популярность алгоритма.
Стойкость.
Простота программной реализации.
Выбор симметричных алгоритмов шифрования
Симметричные алгоритмы шифрования делятся на блочные и потоковые алгоритмы. В качестве примеров блочных алгоритмов программа курса использует DES(DataEncryptionStandard) иBlowfish.
Требования программы |
Распространенность |
Стойкость |
Простота программной реализации |
DES |
Очень широкая |
Недостаточна |
Очень неудобен |
Blowfish |
Широкая |
Высока |
Очень удобен |
В настоящее время DESвыходит из употребления, что связано с малой длиной ключа – 56 бит. Еще в 1993 г. была спроектирована ЭВМ, которая позволяла взломатьDESпутем простого подбора ключей за 1 ч. Стоимость этой машины составляла 1 млн. $, но со временем эта стоимость будет только стремительно уменьшаться [3]. Кроме того, шифрDESнеудобен для программной реализации, что связано с большим количеством перестановок отдельных битов и подстановок над 6-битовыми блоками.
Алгоритм Blowfishбыл разработан таким образом, чтобы его можно было очень легко реализовать на серийных 32-битных микропроцессорах. Поэтому в нем используются только операции сложения, побитового исключающего ИЛИ и получение элемента массива по его индексу. Атака путем простого подбора ключей не может быть произведена, т.к. длина ключа может достигать 448 бит. Кроме того, этот алгоритм является стойким к другим методам криптоанализа [2].
Из приведенной таблицы следует, что единственным алгоритмом, который целесообразно реализовывать является Blowfish. Но одного алгоритма недостаточно, т.к. надо продемонстрировать общие принципы построения блочных шифров:
Применение итеративной схемы Фейстеля.
Применение таблиц подстановок.
В качестве второго примера решено взять российский стандарт шифрования ГОСТ 28147-89. Этот алгоритм проще для программной реализации, чем DES, хотя большое число операций над 4-битовыми подблоками остается [2]. Атака, основанная на переборе всех возможных значений ключа, исключена из-за его большой длины – 256 бит.
Выбор алгоритмов шифрования с открытым ключом
Программа курса содержит 2 алгоритма шифрования с открытым ключом: алгоритм шифрования RSAи схема шифрования Эль-Гамаля. Оба эти алгоритма, особенно первый, распространены очень широко. В обучающей программе должны быть реализованы оба этих алгоритма. Необходимо продемонстрировать учащемуся, что стойкость асимметричных алгоритмов основана на вычислительной сложности решения какой-либо задачи [3]. В настоящее время используется не так уж много таких задач. Стойкость алгоритмаRSAоснована на вычислительной сложности разложения числа на два больших простых множителя, а стойкость алгоритма Эль-Гамаля – на вычислительно сложной задаче дискретного логарифмирования. Последняя заключается в том, чтобы для заданных целых чиселgиMи простого числаpнайтиx, такой чтоgxM(modp).