close

Вход

Забыли?

вход по аккаунту

?

Laboratornaya rabota 5 (1)

код для вставкиСкачать
Лабораторная работа № 5
ЗАЩИТА ИНФОРМАЦИИ С ПОМОЩЬЮ СИММЕТРИЧНОЙ КРИПТОСИСТЕМЫ
С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ .NET
Цель работы
Изучить основные характеристики современных блочных алгоритмов симметричного шифрования. Изучить возможности реализации симметричной криптосистемы для передачи информации средствами .NET
Методические указания
1. Модель криптографии .NET Framework
.NET Framework предоставляет реализации некоторых стандартных криптографических алгоритмов.
Пространство имен System.Security.Cryptography среды .NET Framework обеспечивает возможность реализации средств безопасности в приложении при помощи криптографических классов.
На схеме представлена иерархия криптографических классов пространства имен System.Security.Cryptography.
Система безопасности .NET Framework реализует расширяемую модель наследования производных классов. Иерархия имеет следующий вид. * Класс типа алгоритма, например SymmetricAlgorithm, AsymmetricAlgorithm или HashAlgorithm, представляет собой абстрактный уровень. * Класс алгоритма является производным от класса типа алгоритма, например Aes, RC2 или ECDiffieHellman. Это абстрактный уровень. * Классы реализации алгоритма наследуются от класса алгоритма, например AesManaged, RC2CryptoServiceProvider или ECDiffieHellmanCng. Это полностью реализуемый уровень. Используя данный шаблон производных классов, можно легко добавить новый алгоритм или новую реализацию существующего алгоритма. Например, для создания нового алгоритма шифрования с секретным ключом можно наследовать от класса SymmetricAlgorithm. Для создания новой реализации некоторого алгоритма можно создать неабстрактный класс, производный от класса, соответствующего этому алгоритму. Часть криптографических классов представляют собой явные управляемые коды .NET. Имена управляемых провайдеров имеют суффикс Managed. Другая часть классов является оболочками для Microsoft Crypto API. Имена всех неуправляемых провайдеров заканчиваются суффиксом CryptoServiceProvider.
Windows Cryptography API - это API компании Microsoft, предназначенный для доступа к криптографическим функциям, встроенным в платформу Windows. CryptoAPI предоставляет полный набор функций генерации ключей, шифрования/расшифрования, хеширования и цифровой подписи, функций для безопасного экспорта и совместного использования ключей, а также обеспечивает поддержку сертификатов и управление ими.
Например, класс Aes наследуется двумя классами: AesCryptoServiceProvider и AesManaged. Класс AesCryptoServiceProvider представляет собой оболочку для реализации алгоритма AES в CryptoAPI (CAPI), а класс AesManaged написан с использованием только управляемого кода. Реализации в управляемом коде доступны на всех платформах, поддерживающих платформу .NET Framework. Реализации CAPI доступны в предыдущих версиях операционных систем и больше не развиваются. Однако реализации на основе управляемого кода не сертифицированы Федеральным стандартом обработки информации (FIPS) и могут работать медленнее реализаций на основе классов-оболочек.
Помимо реализации в управляемом коде и реализации в CAPI, существует также третий тип реализации, криптография следующего поколения (CNG) - это новейшая реализация, дальнейшая разработка которой будет продолжена.. Примером алгоритма CNG является класс ECDiffieHellmanCng. Алгоритмы CNG доступны в Windows Vista и последующих версиях.
2. Симметричные алгоритмы в .NET.
В основе всех симметричных алгоритмов лежит класс SymmetricAlgorithm. В .NET Framework поддерживаются следующие классы симметричных алгоритмов:
- DES;
- RC2;
- Rijndael;
- TripleDES;
- Aes.
Ниже перечисленные классы провайдеров реализуют алгоритмы шифрования с секретным ключом: - AesManaged и AesCryptoServiceProvider (введены в .NET Framework 3.5) - DESCryptoServiceProvider - RC2CryptoServiceProvider - RijndaelManaged - TripleDESCryptoServiceProvider. Класс SymmetricAlgorithm предоставляет несколько общих методов и свойств, которыми можно пользоваться во всех симметричных алгоритмах.
В таблице представлены некоторые из этих свойств и методов.
В .NET используется поточно-ориентированный подход для реализации алгоритмов симметричного шифрования и хэширования. Основой такого подхода является класс CryptoStream, производный от класса Stream. Основанные на потоках криптографические объекты поддерживают единый стандартный интерфейс (CryptoStream) для управления своими частями, ответственными за передачу данных.
В зависимости от выбранного алгоритма в методах шифрования и расшифрования необходимо сделать следующие объявления (создать объект соответствующего типа провайдера):
После этого назначить секретный ключ, введенный пользователем, свойству Key. Например, для алгоритма DES:
DESProvider.Key = ASCIIEncoding.ASCII.GetBytes(cryptoKey);
Затем с помощью метода GenerateIV() сгенерировать вектор инициализации. Например:
DESProvider. GenerateIV();
Далее создать объект шифрования для соответствующего алгоритма, вызывая метод CreateEncryptor(). Например, для DES:
ICryptoTransform DESEncrypt = DESProvider.CreateEncryptor();
Задания на лабораторную работу
Разработать приложение, выполняющее шифрование и расшифрование данных с использованием симметричного алгоритма согласно варианту задания.
В программе задать режим шифрования, длину ключа, размер блока, используемый способ заполнения последнего блока открытого текста, при необходимости, исходные данные для режима шифрования (IV, счетчики).
Открытый текст должен вводиться в окне диалога.
Вывести на экран: 1) шифртекст;
2) используемый режим шифрования;
3) способ заполнения последнего блока;
4) корректные размеры ключей для данного алгоритма;
5) допустимые размеры блока шифрования для данного алгоритма.
Для алгоритмов DES и 3DES проверить ключи на слабость с помощью метода IsWeakKey.
Необходимые для работы алгоритма случайные числа генерировать методом RNGCryptoServiceProvider.
Секретный ключ создавать методом GenerateKey, либо генерировать ключ на основе введенного пользователем пароля методом Rfc2898DeriveBytes.
Варианты заданий:
1. Алгоритм DES, режим работы ECB, метод заполнения последнего блока PKCS7
2. DES, CBC, ANSIX923
3. DES, CFB, ISO010126
4. 3DES, ECB, ANSIX923
5. 3DES, CBC, ISO010126
6. 3DES, CFB, PKCS7
7. RC2, ECB, ISO010126
8. RC2, CBC, PKCS7
9. RC2, CFB, ANSIX923
10. Rijndael, ECB, ANSIX923
11. Rijndael, CBC, PKCS7
12. Rijndael, CFB, ISO010126
13. Aes, ECB, PKCS7
14. Aes, CBC, ANSIX923
15. Aes, CFB, ISO010126
16. Aes, CTR, None
Контрольные вопросы
1. Перечислите размеры ключей и другие важные характеристики основных алгоритмов симметричного шифрования: DES, RC, TripleDES, ГОСТ28147-89, AES.
2. Какие типы операций используются в большинстве современных блочных алгоритмов симметричного шифрования? Какие требования предъявляются к стандартному симметричному алгоритму шифрования?
3. Перечислите криптографические классы высокого уровня, которые содержит пространство имен System.Security.Cryptography среды .NET Framework?
4. Какие симметричные алгоритмы поддерживаются в .NET? Какие из симметричных алгоритмов представляют собой явные управляемые коды .NET, а какие являются оболочками для Microsoft CryptoAPI?
5. Как можно получить корректные размеры ключей, поддерживаемые алгоритмом? Допустимые размеры блока, поддерживаемые текущим алгоритмом?
6. Перечислите способы заполнения последнего блока, предоставляемые .NET Framework.
7. Какие режимы шифрования поддерживаются в .NET Framework?
8. Выберите из предложенных вариантов заданий те, которые могут быть использованы на практике для а) обеспечения конфиденциальности передаваемой по сети информации произвольного размера;
б) обеспечения защиты секретных ключей;
в) обеспечения конфиденциальности поточных приложений;
г) получения криптографической контрольной суммы.
Литература
1. Торстейнсон, П. Криптография и безопасность в технологии .NET / П. Торстейнсон, Г.А. Ганеш.- М.: БИНОМ. Лаборатория знаний, 2007.- 479с.
2. NET. Сетевое программирование / В. Кумар [и др.]. - М.: Лори, 2007.- 400 с.
3. MSDN library
1
Документ
Категория
Рефераты
Просмотров
67
Размер файла
2 456 Кб
Теги
rabota, laboratornaya
1/--страниц
Пожаловаться на содержимое документа