поиск по сайту
ПСКЗИ ШИПКА и Windows 7: вместе по жизни

А.С. ЗУНОВ, И.В. ЛЮБИМОВ, Е.К. ТАФИНЦЕВ
РОССИЯ, МОСКВА, ОКБ САПР

ПСКЗИ ШИПКА и Windows 7: вместе по жизни

Операционные системы Windows Vista, Windows Server 2008 и Windows 7 существенно отличаются от своих предшественниц: новый графический дизайн, оптимизация работы компонентов системы, добавление новых полезных для пользователя приложений. Каждый раз, создавая новую операционную систему, компания Microsoft стремится сделать ее как можно более дружественной по отношению к обычному пользователю. Следует отметить, что Windows 7 является самой стабильной и доработанной среди перечисленных выше операционных систем. Поэтому разумно создавать приложения и разрабатывать драйвера, именно для этой системы, предполагая, что именно она будет востребована. Этим и руководствуются разработчики ЗАО «ОКБ САПР» при работе над развитием программного обеспечения ПСКЗИ ШИПКА. Далее будут кратко освещены основные аспекты нововведений, связанных с безопасностью системы, и показано, как эти нововведения применимы к ПСКЗИ ШИПКА.

***

Для обеспечения взаимодействия устройства ШИПКА с любой операционной системой необходим соответствующий набор из двух драйверов:

  • Драйвер устройства ШИПКА
  • Драйвер виртуального считывателя.

Операционные системы, начиная с Windows Vista, распространяются в двух версиях платформы: x64 и x86.

Версия x86 используется повсеместно, но и версия x64 в последнее время вызывает интерес, как у покупателей, так и у разработчиков программного обеспечения. Следовательно, разумно обеспечивать поддержку работоспособности ПСКЗИ ШИПКА на этих двух платформах параллельно. Для этого были перекомпилированы драйвера ШИПКА с учетом поддержки платформы x64.

Для нормальной работы драйверов, их следует подписывать ЭЦП. Для подписания драйверов используется сертификат, выданный компанией VeriSign. Дело в том, что, начиная с Windows Vista, первичная установка драйвера производится при помощи механизма предустановки. В случае установки неподписанного драйвера пользователем не имеющем прав администратора операционная система не выполняет предустановку такого драйвера, никак не уведомляя об этом пользователя. Кроме того, загрузка неподписанных драйверов в 64-х битной системе в штатном режиме невозможна.

Поддержка платформ х86, х64 и наличие подписанного набора драйверов обеспечивают комфортную работу пользователей и расширяют возможности интеграции.

***

Теперь перейдем к вопросу аутентификации пользователей в новых операционных системах. В операционной системе Windows XP и более  ранних для аутентификации пользователей использовался компонент под названием GINA (Graphical Identification and Authentication). По сути, GINA - это динамически подгружаемая библиотека, которую использует процесс WinLogon, автоматически запускаемый при старте операционной системы и отвечающий за вход пользователей в операционную систему. Эта библиотека отображает пользовательские диалоги, принимает каким-либо способом учетные данные от пользователя и осуществляет вход в систему. Для интеграции аппаратных средств  защиты с операционной  системой, разработчику было необходимо написать собственную реализацию библиотеки GINA. Такой метод вызывал большие трудности при разработке и отладке, а архитектура входа на базе GINA имеет потенциальные проблемы безопасности. Кроме того подмена системной библиотеки выглядит подозрительно, и некоторые антивирусы могут посчитать модифицированную библиотеку вирусом.

При разработке Windows Vista компания Microsoft полностью отказалась от библиотеки GINA, заменив ее новым механизмом, основанным на поставщике учетных данных. Поставщик учетных данных - это  модуль, созданный по технологии COM, и предоставляющий операционной системе учетные данные для входа пользователя в систему. Каждый поставщик сообщает операционной системе набор полей, которые она должна отображать, при этом возможно отображение сразу нескольких иконок, представляющих разные учетные данные. Модель на основе технологии COM делает интерфейс для разработчика более простым, а также отделяет системные библиотеки от сторонних.

Новая архитектура устраняет недостатки в плане безопасности и упрощает интеграцию сторонних средств. В операционных системах семейства Windows возможна одновременная работа нескольких пользователей, кроме того для поддержания работы системы в целом всегда работают системные сервисы и другие процессы. Для  разделения данных, принадлежащих разным пользователям, был придуман механизм сессий. Каждый пользовательский сеанс имеет свой уникальный номер сессии, который назначается процессам. Процессы могут создавать именованные объекты ядра доступные только в их сессии. Входом пользователей в систему управляет системный процесс WinLogon. В версиях операционной системы до Vista он запускался в нулевом пользовательском сеансе, в котором выполняются так же системные сервисы. Поэтому объекты ядра сервисов могли быть доступны пользователю, вошедшему первым в систему. В Windows Vista и последующих версиях в нулевом сеансе запускаются сервисы, и функции связанные с графическим интерфейсом в нем принципиально запрещены. А для входа пользователей доступны первый и последующие сеансы, в которых работает WinLogon. Отображением интерфейса для ввода учетных данных занимается процесс LogonUI, запускаемый процессом WinLogon. LogonUI в свою очередь получает список зарегистрированных поставщиков учетных данных из реестра и подгружает соответствующие библиотеки.

Есть еще один механизм для изменения поведения LogonUI - это фильтры провайдеров. Перед отображением полей, полученных от провайдеров, LogonUI загружает зарегистрированные фильтры. Каждый фильтр получает список провайдеров и указывает доступность или недоступность провайдера. Таким образом, возможно запретить парольный провайдер по умолчанию, и разрешить только провайдер устройства ШИПКА.

Модель поставщика учетных данных в Windows Vista значительно упростила интеграцию аппаратных средств в операционную систему по сравнению с предыдущим технологией GINA. Функции, выполняемые библиотекой GINA, разделены между системным процессом LogonUI и  поставщиками учетных данных, что приводит к ограничениям возможностей сторонних разработчиков. Новая архитектура стала безопаснее.

***

Еще одно из нововведений операционных систем Windows Vista и Windows 7 - это новый интерфейс API (Application Programming Interface) криптографии. Он предназначен для замены устаревшего интерфейса CryptoAPI, который был представлен в более ранних версиях Windows. Полное название нового криптографического интерфейса - Cryptography API Next Generation (CNG). Рассмотрим архитектуру интерфейса CNG (рис. 1), которая позволяет разработчикам быстро создавать качественные криптографические приложения.

Рис. 1. Архитектура CNG

Компонент BCrypt обеспечивает примитивы криптографии, такие как генерация случайных чисел, функции хэширования, подписи и шифрования. В отличие от него NCrypt является компонентом, позволяющим работать с криптографическими ключами в таких устройствах, как смарт-карты. Следует заметить, что примитивы BCrypt могут быть использованы как в режиме ядра, так и в пользовательском режиме. Это одно из нововведений CNG. Хранилище ключей NCrypt доступно только из пользовательского режима.

Теперь рассмотрим основные плюсы в использовании интерфейса CNG:

  • Криптографическая гибкость. В CNG используется подход, основанный на интерфейсах (в то время как в большинстве интерфейсов API криптографии используется подход, основанный на алгоритмах). Использование криптографических интерфейсов в CNG позволяет быстро добавлять к уже созданным приложениям новые криптографические алгоритмы. Еще одно отличие от CAPI - это то, что CNG не требует, чтобы реализация собственного криптографического провайдера была подписана компанией Microsoft. Таким образом, не составит особого труда добавить к стандартному набору алгоритмов Windows Vista \ Windows 7 отечественные алгоритмы, такие как алгоритм симметричного шифрования ГОСТ 28147-89, алгоритм электронной цифровой подписи ГОСТ Р 34.10-2001 и алгоритм хэширования ГОСТ Р 34.11-94.
  • Улучшенный аудит. События, связанные с операциями с ключами, могут быть отслежены по журналу событий.
  • Поддержка Suite B (Suite B - стандарт 2005 года Агентства Национальной Безопасности США, содержит новые комплекты шифров).
  • Поддержка предыдущих версий CryptoAPI. CNG поддерживает все алгоритмы, предоставляемые интерфейсом CAPI 1.0.

Специальное программное обеспечение ПСКЗИ ШИПКА, поставляемое в комплекте с устройством, содержит криптографическую библиотеку, взаимодействующую через CAPI 1.0. Наличие данной динамической библиотеки позволит пользователю использовать весь основной потенциал данного криптографического интерфейса. Но в отличие от штатных криптопровайдеров, в криптопровайдере для ПСКЗИ ШИПКА все криптографические операции, такие как шифрование, хеширование, подпись, генерация ключей, осуществляются аппаратно в устройстве ШИПКА. Также устройство может хранить в себе ключи. Таким образом, ПСКЗИ ШИПКА гарантирует корректное выполнение криптографического алгоритма  и обеспечивает надежность хранения ключей. В настоящий момент ведется разработка динамической библиотеки для ПСКЗИ ШИПКА, поддерживающей криптографический интерфейс CNG.

***

Итак, с появлением новых операционных систем пользователи получили более безопасную подсистему аутентификации и более гибкий криптографический интерфейс. Для обеспечения взаимодействия устройства ШИПКА с новыми операционными системами имеется набор подписанных драйверов для платформ x86 и x64. Устройство ШИПКА, в свою очередь, обеспечивает дополнительную защиту в данных подсистемах безопасности.


ФорумФорум
Форум ОКБ САПР
Вопросы специалистовВопросы специалистов
Вопросы, которые нам присылают, и наши ответы на них