Как уже указывалось, основным достоинством программных СКЗИ является их дешевизна и гибкость. Наряду с этими существенными достоинствами у программных СКЗИ имеются и существенные недостатки, заключенные, собственно, в их наибольшем достоинстве – возможности легкой модификации. Программа, реализующая некоторую функцию защиты информации, может быть достаточно просто модифицирована злоумышленником. Для устранения угрозы модификации следует каким-то образом осуществить контроль целостности этой программы, однако это возможно только с помощью другой программы. Проверка целостности одних программ при помощи других не является надежной. Необходимо четко представлять, каким образом обеспечивается целостность собственно программы проверки целостности. Если обе программы находятся на одних и тех же носителях, доверять результатам такой проверки нельзя.
Еще одной серьезной проблемой программных СКЗИ является использование оперативной памяти системы для операций с криптографическим ключом – конечный промежуток времени криптографический ключ присутствует в памяти в открытом виде и может быть из нее извлечен. Кроме того, есть еще одна проблема, связанная скорее с недостатками программирования, а не со спецификой программных СКЗИ, например, неаккуратное использование временных файлов, при котором в них может оставаться ценная для криптоанализа информация.
Весьма серьезной проблемой программных СКЗИ является датчик случайных чисел, используемых для формирования ключа. Часто для генерации ключевого материала используются показания системных часов, данные из оперативной памяти, и прочая псевдослучайная информация. Следует отметить, что ни один метод получения случайного числа, кроме физически случайных (например, тепловой шум) не может быть признан истинно случайным и, вполне вероятно, подчиняется некоторой закономерности, а, следовательно, при его использовании может быть получен слабый ключ. В некоторых современных компьютерах имеется встроенный аппаратный датчик случайных чисел, однако в контексте использования программных СКЗИ следует помнить, что этот датчик доступен ОС, поэтому для его гарантированной стойкости необходимо использование доверенной ОС.
В связи с перечисленным к программным системам защиты информации следует относиться с особой осторожностью, хотя они могут быть весьма эффективны для защиты информации, не содержащей государственной тайны (таблица 2.1).
Таблица 1.1. – Примеры систем СКЗИ
Группа СКЗИ
Примеры
Системы идентификации и аутентификации пользователей
Встроенные средства ОС
Системы шифрования дисковых данных
Встроенные средства ОС, PGP, Secret Disk
Системы шифрования данных, передаваемых по сетям
Комплексы ЗАСТАВА (VPN + программное СКЗИ)
Системы аутентификации электронных данных
PGP
Средства управления ключевой информацией
Сервер сертификатов ЗАСТАВА
В большинстве распространенных операционных систем предусмотрены встроенные средства шифрования дисковых данных. Например, в MS Windows , начиная с Windows 2000, предусмотрена система шифрования файлов на NTFS -дисках. Это прозрачное шифрование, технология которого основана на сертификатах открытых ключей.
Такие криптографические сервисы, как контроль целостности, аутентификацию пользователей и данных, шифрование дисковых данных и канальное шифрование можно реализовать, используя базовые криптографические примитивы: хеш-функции, схемы шифрования и электронно-цифровой подписи. Это делает обоснованным иерархический подход к созданию СКЗИ: на базе основного устройства (аппаратного или программного), реализующего основные криптографические примитивы. Посредством использования библиотек функций создаются прикладные программные продукты, осуществляющие дисковое (в т.ч. прозрачное), абонентское, канальное шифрование, ЭЦП, аутентификацию пользователей и данных. Такой подход реализован, например, в разработках фирмы "Анкад", где основным устройством являются платы КРИПТОН или программный эмулятор платы Crypton Emulator (рисунок 1.2).
Рисунок 1.2 Структура средств криптографической защиты информации фирмы "Анкад"
Во многом аналогичный подход использован Microsoft при создании своего CryptoAPI – криптографического интерфейса прикладных программ. CryptoAPI представляет собой набор функций, предназначенных для работы различных криптографических сервисов (шифрования, хэш-функций, ЭЦП, проверки сертификатов). С помощью функций CryptoAPI можно создавать прикладное ПО, призванное решать криптографические задачи различной степени сложности. Особо стоит отметить, что CryptoAPI содержит только описание функций криптографических примитивов; непосредственная их реализация содержится в отдельной библиотеке, называемой криптопровайдером. Microsoft предоставляет два своих криптопровайдера – простой и расширенный. Они содержат реализацию криптографических функций, используемых ОС Windows для собственных нужд.
Таким образом, CryptoAPI позволяет, с одной стороны, использовать криптографические средства Windows , а с другой, не ограничивает программиста своей собственной реализацией криптоалгоритмов, позволяя использовать другие (доверенные) криптопровайдеры. При этом следует учитывать, что используя криптопровайдер от Microsoft , мы выдаем определенный кредит доверия самой ОС Windows , несмотря на закрытость ее кода и фактическую невозможность установить факт отсутствия ошибок, программных закладок недобросовестных разработчиков или соответствующих служб. Кроме того, криптопровайдер от Microsoft содержит описание ограниченного количества алгоритмов шифрования и имеет ряд весьма неприятных для разработчика СКЗИ ограничений.
Следует отдельно отметить развивающееся семейство программных СКЗИ, созданных в рамках концепции open source . В первую очередь к ним следует отнести детище Филипа Циммермана - PGP. PGP – программное СКЗИ, позволяющее (в зависимости от версии функциональность может различаться) шифровать данные (файловое шифрование или создание защищенного диска – PGP -диск), подписывать сообщения и управлять ключами. Следует отметить, что в настоящее время проект PGP принадлежит Network Associates и Циммерман не имеет к нему более никакого отношения.