Задания к лабораторным работам по дисциплине «Методы и средства защиты компьютерной информации»

Л.р. №1. Криптоалгоритм AES.

В лабораторной работе необходимо реализовать шифрование и расшифрование с помощью алгоритма AES для 128-битных ключа и блока.

На вход подается ключ и блок данных, на выходе получается зашифрованный или расшифрованный блок (во все случаях данные в шестнадцатиричном виде, используются 32 шестнадцатиричные цифры подряд без пробелов. Например:

Открытый текст: 00112233445566778899aabbccddeeff
Ключ: 000102030405060708090a0b0c0d0e0f
Шифротекст: 69c4e0d86a7b0430d8cdb78070b4c55a

Пояснения к стандарту AES (файл fips-197.pdf):

Стр. 11 — 12, пункт 4.2.1. Умножение на 2 (для МixColumns).

Стр. 14, рис. 4. Зависимость количества раундов от длины блока и ключа.

Стр. 15, рис. 5. Основной алгоритм шифрования.

Стр. 16, рис. 7. Таблица замен для шага SubBytes шифрования.

Стр. 17, рис. 8. Реализация шага ShiftRows для шифрования.

Стр. 18, формула 5.6. Таблица умножения для шага MixColumns шифрования.

Стр. 19, рис. 10. Реализация шага AddRoundKey.

Стр. 20, рис. 11. Алгоритм расширения ключа.

Стр. 21, рис. 12. Основной алгоритм расшифрования.

Стр. 22, рис. 13. Реализация шага ShiftRows для расшифрования.

Стр. 22, рис. 14. Таблица замен для шага SubBytes расшифрования.

Стр. 23, формула 5.10. Таблица умножения для шага MixColumns расшифрования.

Стр. 25, рис. 15. Эквивалентный алгоритм расшифрования и изменение алгоритма расширения ключа (не обязательно).

Литература:

Advanced Encryption Standard (AES). Federal Information Processing Standards Publication 197.

J. Daemen, V. Rijmen. AES Proposal: Rijndael (с переводом).

E. Zabala. Rijndael Tutorial (FLASH анимация).

Л.р. №2. Криптоанализ полиалфавитных шифров.

Варианты заданий для криптоанализа (txt, win).

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

Для криптоанализа сообщения можно использовать методы Казизки, автокорреляции или индекса совпадений.

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

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

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

Справочная информация:

Использованный в вариантах задания алфавит: " абвгдежзийклмнопрстуфхцчшщъыьэюя"

Количественная статистика распределения букв в использованных в задании текстах:

[(7938,' '),(3668,'а'),(822 ,'б'),(2136,'в'),(610 ,'г'),(1212,'д'),(4714,'е'),(424 ,'ж'),(1006,'з'),(4242,'и'),(514 ,'й'),
 (1704,'к'),(1962,'л'),(1846,'м'),(3690,'н'),(5832,'о'),(1488,'п'),(2234,'р'),(2926,'с'),(3726,'т'),(1270,'у'),(248 ,'ф'),
 (492 ,'х'),(280 ,'ц'),(736 ,'ч'),(204 ,'ш'),(366 ,'щ'),(16 ,'ъ'),(1100 ,'ы'),(938 ,'ь'),(170 ,'э'),(452 ,'ю'),(918 ,'я')]

Литература:

А. Саломаа. Криптография с открытым ключом, п. 1.3 (стр. 44 — 51).

В.В. Ященко. Введение в криптографию, п. 7.4 (стр. 190 — 198).

Текст примера шифра Цезаря (win).

Анализ текстов. Применение статистики для анализа текстовой информации (win).

Л.р. №3. Криптосистема на основе алгоритма ГОСТ 28147-89.

В лабораторной работе необходимо реализовать криптосистему, предназначенную для шифрования файлов. Структурная схема передающей и принимающей частей приведена на рисунках 3-1 и 3-2 соответственно. Вход слева в блок криптоалгоритма обозначает данные, а вход сверху или снизу — ключ.

В качестве криптоалгоритма в данной криптосистеме следует использовать алгоритм, описанный в стандарте ГОСТ 28147-89.

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

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

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

Генератор случайных чисел должен быть инициализирован действительно случайной информацией, полученной от пользователя.

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

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

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

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

Л.р. №4. Криптоалгоритм RSA.

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

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

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

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

Л.р. №5. Криптографический протокол электронных денег.

В лабораторной работе необходимо реализовать программу, моделирующую протокол электронной наличности (см. лекцию № 4). Система должна обеспечивать неотслеживаемость Клиента, проверять аутентичность купюр и предотвращать их повторное использование. Программа может быть реализована как в виде многооконного приложения, так и в клиент-серверном варианте.

При запуске программы необходимо задать (или сгенерировать) файлы с парой ключей Банка, установить процент риска слепой подписи (от него зависит количество заявок на купюры, которые Банк запросит от Клиента при выдаче купюры) и определить начальную сумму на счете нового Клиента. Эта информация не будет меняться во время работы программы.

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

Окно Банка отображает список использованных купюр и список Клиентов с указанием текущего баланса каждого из них.

При создании нового окна Клиента его имя появляется в списке Банка, а на его счет зачисляется начальная сумма. При закрытии окна Клиента его имя убирается из списка Банка.

Окно Клиента отображает его имя, и содержит средства для запроса у Банка купюры требуемой суммы, а так же зачисления купюры в банк на свой счет.

Каждая купюра хранится в файле со своим именем. Имя файла и номинал купюры задается в окне Клиента при ее получении.

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

При неудачном запросе купюры необходимо вывести сообщение о нехватке денег на счете с именем Клиента и оставшейся на счете суммой.

Если ошибка при запросе купюры произошла в протоколе слепой подписи, необходимо вывести соответствующее сообщение.

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

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

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

При реализации протокола использовать библиотеку операций с числами большой длины и алгоритм RSA, реализованные в л.р. №4.

Примечание по реализации протокола слепой подписи:

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

Необходимо помнить, что в арифметике целых чисел по модулю, деление на x по модулю n равносильно умножению на обратное число x-1 по модулю n такое, что x*x-1 mod n = 1. Эта задача уже встречалась при генерации ключей алгоритма RSA. Для нахождения обратного числа используется расширенный алгоритм Евклида.

См. раздел 2.4.3, п. 2.115 — 2.116 в книге A. Menezes, P. van Oorschot, S. Vanstone. Handbook of Applied Cryptography.

Пример:

Параметры подписи: p = 11; q = 3; n = 33; fi = 20; d = 3; e вычисленное по расширенному методу Евклида = 7.

Параметры сообщения: сообщение a = 2; маскирующий множитель r = 5.

Тогда:

Банку отсылается на подпись a*re mod n = 2*57 mod 33 = 28.

Банк подписывает и отправляет обратно (a*re mod n)d mod n = 283 mod 33 = 7.

Клиент снимает подпись, умножая на число 20, обратное 5 по модулю 33 (20*5 mod 33 = 1): 7*20 mod 33 = 8.

Проверка: Требовалось получить подпись ad = 23. Получили: 8.

Что и требовалось доказать.

Л.р. №6. Знакомство с Microsoft CryptoAPI.

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

Для каждого криптопровайдера должны быть выведены название, версия, тип, исполнение (программное, аппаратное, прочее) и список поддерживаемых криптоалгоритмов.

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

Л.р. №7. Симметричная криптосистема на основе Microsoft CryptoAPI.

В лабораторной работе необходимо реализовать программу симметричного шифрования файлов с выработкой имитовставки (секретного хеша). Для выполнения всех криптографических операций нужно использовать функции Microsoft CryptoAPI или криптографические сервисы .NET Framework.

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

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

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

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

Л.р. №8 (РГЗ). Асимметричная криптосистема на основе Microsoft CryptoAPI.

В работе необходимо спроектировать асимметричную криптосистему и реализовать ее средствами Microsoft CryptoAPI или .NET Framework System.Security.Cryptography. Функции системы, компоненты и связи между ними должны быть выбраны самостоятельно. Оценка будет учитывать корректность системы и реализованную в программе функциональность.

Отчет по лабораторной (РГЗ) должен включать в себя структурную схему криптосистемы (по примеру л.р. №3) и текст программы.