Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Криптосервисы .NET Framework - Алгоритмы шифрования28 апреля 2011Оглавление: 1. Криптосервисы .NET Framework 2. Алгоритмы шифрования 3. Обмен симметричными ключами 4. Хэширующие алгоритмы 5. Цифровая подпись 6. Ограничения Симметричные алгоритмыЕсть несколько способов формирования блочных шифров. Наиболее простой и интуитивно понятный способ состоит в том, чтобы разбить исходный текст на блоки соответствующего размера, а затем отдельно каждый блок подвергнуть шифрующему преобразованию. Такой режим использования блочных шифров называют электронной кодовой книгой. Его главный недостаток состоит в том, что одинаковые блоки исходного текста при шифровании дадут одинаковые блоки шифр-текста, а это может существенно облегчить противнику задачу взлома. Поэтому режим ECB не рекомендуется использовать при шифровании текстов, по длине превышающих один блок. В таких случаях лучше воспользоваться одним из режимов, связывающих различные блоки между собой. По умолчанию в CryptoAPI блочные шифры используются в режиме сцепления блоков шифр-текста. В этом режиме при шифровании очередной блок исходного текста вначале комбинируется с предыдущим блоком шифр-текста, а затем полученная последовательность битов поступает на вход блочного шифра. Образующийся на выходе блок шифр-текста используется для шифрования следующего блока. Самый первый блок исходного текста также должен быть скомбинирован с некоторой последовательностью битов, но «предыдущего блока шифр-текста» еще нет; поэтому режимы шифрования с обратной связью требуют использования еще одного параметра он называется инициализирующим вектором. IV несекретное двоичное значение, размер которого равен длине блока шифра. Чтобы сгенерировать новый ключ, нужно вызвать метод GenerateKey, а для вектора инициализации метод GenerateIV. Например, для алгоритма RC2, поддерживаемого базовым криптопровайдером Microsoft, размер блока составляет 64 бита.
SymmetricAlgorithm является абстрактным базовым классом, от которого наследуют другие классы, специфичные для конкретных алгоритмов. К числу поддерживаемых симметричных алгоритмов относятся Data Encryption Standard, RC2, Rijndael, Advanced Encryption Standard и Triple Data Encryption Standard. Каждый алгоритм включает какой-нибудь производный от SymmetricAlgorithm абстрактный класс вроде DES и производный от базового управляемый класс или класс провайдера сервиса, например DESCryptoServiceProvider. Свойства KeySize и BlockSize позволяют определять длину ключа и размер блока данных, который может быть зашифрован или расшифрован за одну операцию. Применение класса RijndaelManaged:
.NET Framework поддерживает модель программирования на основе потоков. Классы потоков, производные от System.lO.Stream, представляют данные из различных хранилищ и позволяют считывать данные из соответствующих хранилищ или записывать в них. В основе этой функциональности лежит класс CryptoStream, производный от System.IO.Stream и служащий в качестве модели потоков при криптографических преобразованиях.
Асимметричное шифрование применяется для шифрования небольших объёмов данных, поэтому CryptoStream при асимметричном шифровании не используется. Асимметричное шифрованиеК общеизвестным асимметричным алгоритмам относятся Digital Signature Algorithm и RSA. Эти алгоритмы в конечном счете являются производными от абстрактных классов DSA и RSA, в свою очередь производных от AsymmetricAlgorithm. Так как эти алгоритмы очень сложны, им нужны вспомогательные классы, производные, например, от AsymmetricKeyExchangeFormatter и AsymmetricSignatureFormatter.
Вы можете не только позволить исходному конструктору асимметричных алгоритмов сгенерировать пару ключей, но и извлечь уже существующую пару из хранилища, поддерживаемого CSP.
Просмотров: 7017
|