Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #72, НОЯБРЬ 2006 г.

военная тайна

ДРОЗДОВ АНДРЕЙ AKA SULVERUS

Спецвыпуск: Хакер, номер #072, стр. 072-034-1


OFFBIT SECURITY TEAM (SULVERUS@MAIL.RU)

ОБЗОР CRYPTOAPI В MS WINDOWS VISTA

ЕЩЕ В ДРЕВНЕМ КИТАЕ МОНАХИ УЧИЛИСЬ ДОРИСОВЫВАТЬ ИЕРОГЛИФЫ ТАКИМ ОБРАЗОМ, ЧТОБЫ ИХ МОГЛИ ПОНИМАТЬ ТОЛЬКО ИЗБРАННЫЕ, ЗНАЮЩИЕ МЕТОД РАСШИФРОВКИ. ВО ВРЕМЕНА ВТОРОЙ МИРОВОЙ ВОЙНЫ В АНГЛИИ ЛУЧШИЕ УМЫ МИРА КРИПТОАНАЛИТИКИ (БЛЕЙЧ ЛИ ПАРК) БИЛИСЬ ЗА ТО, ЧТОБЫ РАСШИФРОВАТЬ АЛГОРИТМ ЗНАМЕНИТОЙ МАШИНЫ ENIGMA

RC4, RSA, DDS, DES, MD2, MD5, SHA16, SHA32, SHA128, SHA512, ГОСТ Р 34.11-94... Очень многое в современном безопасном программировании так или иначе связанно с этими аббревиатурами. В наше время проблема защиты информации и, соответственно, криптографии с каждым днем становится все актуальнее. Как известно, еще Цезарь шифровал некоторые документы кривоватыми криптографическими алгоритмами.

В привычном же Win32 реализована система криптопровайдеров и система интерфейсов к этим провайдерам. В Windows Vista, с одной стороны, все не сильно изменилось: все так же остался Cryptographic Application Programming Interface, но с другой стороны теперь все управление криптопровайдерами ведется на основе платформы .NET, а значит, все кардинально изменилось. Пришло время разобраться с системой криптопровайдеров в Windows Vista.

[что есть CryptoAPI?]

Подобная система была придумана компанией Майкрософт для того, чтобы увеличить безопасность приложений и определенным образом структурировать криптографические алгоритмы для удобства создания программ и динамических библиотек. В Win32 было реализовано две версии CryptoAPI: 1.0 и 2.0. В последней версии поддерживалось очень много типов криптографических преобразований, начиная от базовых и простых и заканчивая сложными и более новыми. В платформе .NET Framework в Common Types System(CTS) реализованы классы для работы с CryptoAPI, базовым из которых является класс System.Security.Cryptography. В последней версии .NET Framework (на момент написания статьи - 3.0) реализованы криптопровайдеры для нескольких симметричных алгоритмов - DES, Triple-DES, RC2, Rijndael, двух ассиметричных - DDS, RSA и алгоритмов хеширования - MD5, SHA1, SHA256, SHA386, SHA512, MACTripleDES, HMACSHA-1. На самом деле это лишь документированные криптопровайдеры, в третьей версии .NET Framework'a реализовано чуть больше, чем сказано в документации. Кроме того, .NET поддерживает систему сертификации X.509, о которой мы еще поговорим. Для того чтобы понять все принципы и нововведения CryptoAPI в Windows Vista мы вплотную займемся реализацией всевозможных криптографических преобразований. Чтобы узнать, как работают симметричные и асимметричные алгоритмы и системы цифровых подписей, смотри схемы 1, 2 и 3. Дело это общеизвестное, и останавливаться мы на нем не будем :). Прежде чем мы приступим непосредственно к программированию, спланируем, что будет уметь наша программа.

[разбор полетов.]

Для начала более детально рассмотрим реализованные в .NET framework алгоритмы и их криптопровайдеры. Из симметричных алгоритмов компания Майкрософт реализовала DES, Triple-DES,Rijndael и RC2.

DES был придуман довольно давно, и представляет он из себя алгоритм шифрования с использованием 56-битного ключа. В настоящее время считается не самым безопасным из-за столь короткой длины ключа. В отличие от него, недавно реализованный Triple-DES (он же 3DES) значительно надежнее и безопаснее, - длина его ключа составляет 168 бит.

Содержание  Вперед на стр. 072-034-2