Криптография в.NET Кондратьев Денис Visual.NET User Group vng.visualdesign.ru
Криптография в.NET Основы криптографии Основы криптографии Введение в криптографические алгоритмы Введение в криптографические алгоритмы Пространство имен Cryptography Пространство имен Cryptography Примеры кода Примеры кода Q&A Q&A
Alice и Bob Alice Bob
Задачи криптографии Конфиденциальность: защита данных от просмотра Конфиденциальность: защита данных от просмотра Целостность данных: защита от изменений Целостность данных: защита от изменений Аутентификация: подтверждение источника данных Аутентификация: подтверждение источника данных
Криптографические алгоритмы симметричные алгоритмы симметричные алгоритмы ассиметричные алгоритмы ассиметричные алгоритмы алгоритмы для получения хеша данных алгоритмы для получения хеша данных алгоритмы для подписи данных алгоритмы для подписи данных
System.Security.Cryptography System.Object SymmetricAlgorithm DES, RC2, TripleDES And Rijndael KeyedHashAlgorithm DSS and RSA MD5, SHA1, SHA256, SHA384 and SHA512 HMACSHA1 and MACTripleDES AsymmetricAlgorithm HashAlgorithm
Структура классов System.Object SymmetricAlgorithm DES Rijndael DESCryptoServiceProviderRijndaelManaged
Симметричные алгоритмы Alice (закрытый ключ) Bob (закрытый ключ) E(M,K)= CD(C,K)= M M = сообщение E = шифрование D = дешифрование C = зашифрованный текст.NET реализация.NET реализация DES DES Triple-DES Triple-DES RC2 RC2 Rinjdael Rinjdael
Длина ключа АлгоритмВозможный размер ключа Размер ключа по умолчанию DES64 bit RC240 to 128 bit 128 bit Triple-DES128, 192 bit 192 bit Rijndael128, 192, 256 bit 256 bit
Классы.NET DESCryptoServiceProvider DESCryptoServiceProvider RC2CryptoServiceProvider RC2CryptoServiceProvider RijndaelManaged RijndaelManaged TripleDESCryptoServiceProvider TripleDESCryptoServiceProvider
Использование симметричных алгоритмов ИмяОписание KeyКлюч KeySize Размер ключа в битах LegalKeySizes Возможные размеры ключей IV Инициализирующий вектор CreateEncryptor() Создает объект с интерфейсом ICryptoTransform на основе ключа и IV для шифрования данных CreateDecryptor() Создает объект с интерфейсом ICryptoTransform на основе ключа и IV для дешифровки данных GenerateKey() Создает случайный ключ GenerateIV()
Пример кода DES
Шифрование с открытым ключом Alice (открытый ключ Bob) Bob (закрытый ключ) E(M,K)= C D(C,K)= M.NET реализация.NET реализация DSS (Digital Signature Standard) DSS (Digital Signature Standard) RSA RSA M = сообщение E = шифрование D = дешифрование C = зашифрованный текст
Классы.NET DSACryptoServiceProvider DSACryptoServiceProvider RSACryptoServiceProvider RSACryptoServiceProvider
Шифрование с открытым ключем Члены классаОписание KeySizeРазмер ключа в битах FromXmlString()Создает объект, инкапсулирующий алгоритм, из XML данных ToXmlString()Возвращает XML представление объекта, инкапсулирующего алгоритм
Пример кода RSA
Хеширование AliceBob.NET реализация.NET реализация MD5 MD5 SHA1 SHA1 SHA256 SHA256 SHA384 SHA384 SHA512 SHA512
Классы.NET HMACSHA1 HMACSHA1 MACTripleDES MACTripleDES MD5CryptoServiceProvider MD5CryptoServiceProvider SHA1Managed SHA1Managed SHA256Managed SHA256Managed SHA384Managed SHA384Managed SHA512Managed SHA512Managed
Хеширование Член классаОписание ComputeHash()Расчитывает хеш на основе массива байт или потока HashSize HashРазмер хеша в битах HashВозвращает расчитанный хеш
Пример кода MD5
Цифровая подпись SignatureDescription SignatureDescription DSACryptoServiceProvider DSACryptoServiceProvider RSACryptoServiceProvider RSACryptoServiceProvider
SignData public byte[] SignData(byte[] buffer); public byte[] SignData(byte[] buffer); public byte[] SignData(byte[] buffer, int offset, int count); public byte[] SignData(byte[] buffer, int offset, int count); public byte[] SignData(Stream inputStream); public byte[] SignData(Stream inputStream);
SignHash public byte[] SignHash(byte[] rgbHash(), string str) public byte[] SignHash(byte[] rgbHash(), string str)
Пример кода DSA
Q&A