ЛАБОРАТОРНАЯ РАБОТА № 4. БЕЗОПАСНОЕ РАСПРЕДЕЛЕНИЕ КЛЮЧЕЙ
Цель работы;
1. Изучение методов безопасного распределения ключей в небезопасной среде
2. Изучение свойств и методов класса ECDiffieHellmanCng пространства имен System.Security.Cryptography для создания ключей по алгоритму Диффи-Хеллмана
3. Изучение стека протоколов TCP/IP
4. Изучение свойств и методов классов Sockets, UDPClient, TCPClient и TCPListener пространства имен System.Net
Методы безопасного распределения ключей
В настоящее время применяют следующие методы безопасного распределения ключей:
1. Без привлечения третьей стороны:
1.1. Шифрование секретного ключа симметричной криптосистемы при передаче по сети с помощью открытого ключа асимметричной криптосистемы;
1.2. Алгоритм безопасного распределения ключей Диффи-Хеллмана;
2. С привлечением третьей стороны, которой доверяют все участники соединения:
2.1. Инфраструктура управления открытыми ключами (Public Key Infrastructure -PKI);
2.2. Протокол обмена ключевой информацией Kerberous.
Реализация алгоритма Диффи-Хеллмана в .NET Framework
Алгоритм безопасного распределения ключей Диффи-Хеллмана реализован с помощью класса ECDiffieHellmanCng пространства имен System.Security.Cryptography. Класс ECDiffieHellmanCng позволяет двум сторонам обмениваться секретными ключами, даже если взаимодействие осуществляется по открытому каналу.
Алгоритм Диффи-Хеллмана в System.Security.Cryptography использует, так называемые, новые классы, реализованные, начиная с версии .NET Framework 3.5. Причем, начиная с версии ОС Windows 7. Новые классы имеют префикс (или суффикс) Cng, который представляет собой сокращение от Cryptography Next Generation (криптография следующего поколения).
|
|
Свойства и методы класса ECDiffieHellmanCng
Свойства класса ECDiffieHellmanCng приведены в таблице 4.1, а методы в таблице 4.2.
Таблица 4.1 – Свойства класса ECDiffieHellmanCng
№ | Свойство | Описание |
1 | 2 | 3 |
1 | HashAlgorithm | Получает или задает хэш-алгоритм, используемый при генерации ключевого материала |
2 | HmacKey | Получает или задает ключ HMAC, используемый при формировании ключевого материала. |
3 | Key | Задает объект CngKey, который будет использоваться текущим объектом для выполнения криптографических операций |
продолжение таблицы 4.1
1 | 2 | 3 |
4 | KeyDerivationFunction | Получает или задает функцию формирования ключа для класса ECDiffieHellmanCng |
5 | KeyExchangeAlgorithm | Получает имя алгоритма обмена ключами |
6 | KeySize | Получает или задает размер ключа (в битах), используемого алгоритмом асимметричного шифрования |
7 | Label | Получает или задает значение метки, используемой для формирования ключа |
8 | LegalKeySizes | Возвращает размеры ключа, которые поддерживаются алгоритмом асимметричного шифрования |
9 | PublicKey | Получает открытый ключ, который может использоваться другим объектом ECDiffieHellmanCng для генерации секретного соглашения |
10 | SecretAppend | Получает или задает значение, добавляемое к концу секретного соглашения при генерации ключевого материала |
11 | SecretPrepend | Получает или задает значение, добавляемое к началу секретного соглашения при формировании ключевого материала |
12 | Seed | Получает или задает начальное значение, используемое при формировании ключевого материала. |
13 | SignatureAlgorithm | Получает имя алгоритма подписи |
|
|
Таблица 4.2 – Методы класса ECDiffieHellmanCng
№ | Свойство | Описание |
1 | 2 | 3 |
1 | Clear() | Освобождает все ресурсы, используемые классом AsymmetricAlgorithm |
2 | DeriveKeyMaterial (CngKey) | Формирует ключевой материал из секретного соглашения, заключенного между двумя сторонами, используя заданный объект CngKey, в котором содержится открытый ключ второй стороны |
3 | DeriveKeyMaterial (ECDiffieHellmanPublicKey) | Формирует ключевой материал из секретного соглашения, заключенного между двумя сторонами, используя заданный объект ECDiffieHellmanPublicKey, в котором содержится открытый ключ второй стороны |
продолжение таблицы 4.2
Дата добавления: 2018-08-06; просмотров: 344; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!