Т.М. БОРИСОВА, Д.Ю. СЧАСТНЫЙ РОССИЯ, МОСКВА, ОКБ САПР ОСОБЕННОСТИ РЕАЛИЗАЦИИ КРИПТОПРОВАЙДЕРА ДЛЯ ПРОГРАММНО-АППАРАТНОГО КОМПЛЕКСА ШИПКА Криптопровайдер, или CSP (Cryptographic Service Provider), - это специализированное программное обеспечение фирмы Microsoft, предназначенное для решения криптографических задач в семействе операционных систем Windows. Криптопровайдер представляет собой независимую динамическую библиотеку (DLL) криптографических алгоритмов, доступных прикладным программистам посредством интерфейса CryptoAPI (Cryptographic Application Programming Interface). При взаимодействии с любым криптопровайдером приложения вызывают функции CryptoAPI, которые обращаются к системным библиотекам операционной системы, одна из которых фильтрует вызовы этих функций и передает их далее соответствующим функциям криптопровайдера через CryptoSPI (Cryptographic System Program Interface). Любой криптопровайдер должен экспортировать набор обязательных функций, которые формируют системный программный интерфейс CryptoSPI, при этом каждая из этих функций соответствует некоторой функции CryptoAPI. Так же криптопровайдер должен обеспечивать: реализацию стандартного интерфейса криптопровайдера; работу с ключами шифрования, предназначенными для обеспечения работы алгоритмов, специфичных для данного криптопровайдера; невозможность вмешательства третьих лиц в схемы работы алгоритмов. В зависимости от типа, криптопровайдеры реализуют различные криптографические стандарты (шифрования, хеширования, цифровой подписи и несимметричного ключевого обмена). Помимо этого криптопровайдеры отличаются способом хранения ключевых пар, используемых для несимметричного шифрования или подписи. Если криптопровайдеры Microsoft хранят используемые ими ключевые пары на жестком диске (в файлах или реестре), то другие криптопровайдеры могут хранить их на смарт-картах или на других аппаратных устройствах, таких как программно-аппаратный комплекс ШИПКА. Программно-аппаратный комплекс ШИПКА представляет собой USB-устройство, основным назначением которого являются: безопасное хранение криптографических сессионных ключей и секретных ключей ключевой пары в памяти устройства; аппаратное выполнение криптографических операций в доверенной среде. Как уже говорилось выше, криптопровайдеры реализуются в виде динамически загружаемых библиотек, при этом они имеют цифровую подпись и при работе с криптопровайдером в системных библиотеках проверяется целостность его DLL. Но проверка целостности DLL криптопровайдера осуществляется программно, что дает возможность влиять программным путем на процесс выполнения проверки, а, значит, и на ход алгоритмов. Так как в комплексе ШИПКА криптографические алгоритмы реализованы аппаратно, то, невозможно внести изменения в его код, то есть повлиять на реализацию какого-либо алгоритма. Выявим отличия криптопровайдера, реализованного на основе программно-аппаратного комплекса ШИПКА и программно реализованного криптопровайдера “Microsoft Base Cryptographic Provider”, который является одним из основных криптопровайдеров Windows. Эти криптопровайдеры имеют одинаковый тип - PROV_RSA_FULL, то есть реализуют одинаковый набор алгоритмов вычисления значения хеш-функции, генерации криптографических ключей и ключевых пар, шифрования, вычисления подписи. Таким образом, оба криптопровайдера, имея на входе каждой функции одинаковые параметры и значения входных переменных, на выходе дают так же одинаковые значения. Однако, в связи с различным способом реализации этих криптопровайдеров, криптопровайдер для комплекса ШИПКА имеет следующие особенности реализации по сравнению с криптопровайдером “Microsoft Base Cryptographic Provider”: 1. Аппаратная реализация функций криптопровайдера при помощи устройства ШИПКА Программно-аппаратный комплекс ШИПКА имеет следующие возможности, реализованные аппаратно: вычисление значения хеш-функции (SHA1, MD5); генерация криптографических ключей и ключевых пар (RSA); шифрование (RC2, RC4); вычисление/контроль подписи (RSA). Основываясь на этих возможностях, основные функции криптопровайдера реализуются аппаратно при помощи комплекса ШИПКА. Заметим, что криптопровайдер “Microsoft Base Cryptographic Provider” осуществляет вычисление значения хеш-функции, шифрование, генерацию криптографических ключей и ключевых пар программно, а это значит, что в программный код динамических библиотек могут быть внесены изменения, что не может быть сделано при использовании комплекса ШИПКА, где все эти действия, как говорилось выше, реализованы аппаратно. Недостатком аппаратной реализации криптопровайдера является то, что скорость выполнения алгоритмов будет медленнее, чем при программной реализации. 2. Ключевая база хранится в устройстве ШИПКА Ключевая база любого криптопровайдера представляется набором ключевых контейнеров. В ключевом контейнере сохраняется долговременная ключевая информация. Каждый контейнер содержит ключевую пару цифровой подписи и ключевую пару несимметричного обмена ключами. Криптопровайдер “Microsoft Base Cryptographic Provider” хранит используемую им ключевую базу на жестком диске, что делает ее достаточно уязвимой. Использование же программно-аппаратного комплекса ШИПКА позволяет избежать данной проблемы, так как ключевая база в этом случае хранится в самом устройстве, при этом секретные ключи ключевых пар не являются экспортируемыми и не могут быть переданы из него какому-либо приложению, использующему СryptoAPI. 3. Отчуждаемость ключей При использовании программно-аппаратного комплекса ШИПКА ключи и ключевые пары могут легко и безопасно переноситься пользователем с одного компьютера на другой, то есть, нет необходимости сначала экспортировать ключи или ключевые пары на какой-либо носитель информации, а затем импортировать их на другой компьютер. Так же при использовании устройства ШИПКА ключи наиболее тесно связаны с пользователем, чем с компьютером. Таким образом, можно сделать вывод, что аппаратная реализация криптопровайдера является более безопасной, чем программная. Это связано с тем, что при аппаратной реализации криптопровайдера является невозможным внесение изменений в код алгоритмов, реализованных в комплексе ШИПКА, а так же невозможен перехват и использование секретных ключей в корыстных целях. Программно-аппаратный комплекс ШИПКА при наличии разработанного для него криптопровайдера может использоваться для интерактивного входа в систему, подписи и/или зашифрования e-mail сообщения, а так же для других криптографических операций. В связи с тем, что криптопровайдер для программно-аппаратного комплекса ШИПКА полностью удовлетворяет интерфейсу CryptoAPI, то при изменении кода в устройстве ШИПКА, не потребуется вносить изменения в приложения, разработанные на основе этого криптопровайдера.