Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 163.docx
Скачиваний:
34
Добавлен:
30.04.2022
Размер:
293.01 Кб
Скачать

Лабораторная работа №4 Шифрование и дешифрование

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

Задачи лабораторной работы:

  • рассмотреть особенности симметричного и асимметричного шифрования;

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

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

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

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

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

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

Теоретические сведения

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

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

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

Рис. 5. Схема взаимодействия криптографических функций при симметричном шифровании и дешифровании

Однако в CryptoAPI эта задача решается с помощью, так называемой, гибридной криптографии. В процессе шифрования с помощью функции CryptGenKey создается одноразовый (сеансовый) ключ. Это симметричный ключ, то есть один и тот же ключ используется и для шифрования, и для дешифрования. Одноразовым или сеансовым он называется потому, что используется для шифрования/дешифрования только одного сообщения. На сеансовом ключе с помощью функции CryptEncrypt исходные данные, представленные в виде массива типа BYTE, шифруются. Затем сам сеансовый ключ зашифровывается по асимметричному алгоритму на открытом (публичном) ключе с помощью функции экспорта ключа CryptExportKey. Поскольку ключ шифрования представляет собой сравнительно небольшой объем данных, шифрование такого ключа не занимает много времени. Таким образом, основное требование к процессу шифрования по асимметричному алгоритму – чтобы к закрытому ключу обмена никто не имел доступа, кроме владельца этого ключа – соблюдается. Обобщенная схема взаимодействия криптографических функций, реализующих шифрование согласно гибридной схеме, представлена на рис. 6.

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

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

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

Задание и контрольные вопросы

  1. Используя функции хеширования, CryptDeriveKey, CryptEncrypt и иные необходимые функции, реализовать шифрование по симметричной схеме.

  2. Используя функции хеширования, CryptDeriveKey, CryptDecrypt и иные необходимые функции, реализовать дешифрование по симметричной схеме.

  3. Используя функции CryptGetUserKey, CryptEncrypt, CryptExportKey и иные необходимые функции, реализовать шифрование по гибридной схеме.

  4. Используя функции CryptGetUserKey, CryptImportKey, CryptDecrypt и иные необходимые функции, реализовать дешифрование по гибридной схеме.

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

Перечень категорий вопросов при защите результатов лабораторной работы:

  1. Схема взаимодействия криптографических функций при симметричном шифровании.

  2. Схема взаимодействия криптографических функций при симметричном дешифровании.

  3. Схема взаимодействия криптографических функций при гибридном шифровании.

  4. Схема взаимодействия криптографических функций при гибридном дешифровании.

  5. Описание и назначение криптографического типа данных HCRYPTPROV.

  6. Описание и назначение криптографического типа данных ALG_ID.

  7. Описание и назначение криптографического типа данных HCRYPTKEY.

  8. Описание и назначение криптографического типа данных HCRYPTHASH.

  9. Описание функции CryptGenKey и её параметров.

  10. Описание функции CryptDeriveKeyи её параметров.

  11. Описание функции CryptGetUserKey и её параметров.

  12. Описание функции CryptExportKey и её параметров.

  13. Описание функции CryptImportKey и её параметров.

  14. Описание функции CryptDestroyKey и её параметров.

  15. Описание функции CryptEncrypt и её параметров.

  16. Описание функции CryptDecrypt и её параметров.

  17. Прочие вопросы, связанные с особенностями применения языков программирования C/C++ при работе с CryptoAPI.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]