В последнее время на рынке программных продуктов четко выделился отдельный класс ПО, к которому не применимы традиционные подходы при разработке, маркетинге, сопровождении и защите.
К упомянутому классу относятся продукты, чью основную ценность составляет не программный код, а данные. Это различные базы и банки данных, информационно-справочные, экспертные и геоинформационные системы и т. п. В таких пакетах данные, как правило, хранятся в файлах известных форматов (DBF, MDB, XLS и др.), а программная часть предназначена для их обработки. Это могут быть в простейшем случае операции просмотра, в более развитых системах - операции поиска, модификации данных, изменение структуры и пр. Для простоты описания будем называть программную часть информационного продукта программой просмотра данных.
Программа просмотра может быть стандартным средством для работы с данными, например MS Access либо DBView, или собственной разработкой, предоставляющей какие-либо дополнительные функции. Важно то, что, получив только данные, входящие в программный продукт, можно ими пользоваться, не имея программы работы с ними.
Этот вывод заставляет пересмотреть способ защиты таких пакетов от нелегального использования и тиражирования. Большинство существующих технологий ориентированы на защиту исполняемого кода. В исходный текст программы встраиваются процедуры проверки наличия ключевого признака, без которого программа не должна работать, - электронного ключа; процедуры, усложняющие изучение логики защищенной программы, - шифрование и подсчет контрольных сумм участков кода, а также всевозможные антитрассировочные трюки. Таким образом, приложение не работает без электронного ключа, и “отучить” его от этого ключа довольно сложно.
Применив такую технологию защиты информационных продуктов, можно добиться “некопируемости” программы просмотра. Эта программа, как было сказано выше, имеет меньшую ценность, чем данные, а ее отсутствие не снижает их ценности. Более того, данные могут поставляться и без программы просмотра.
Таким образом, производителям и продавцам информационных продуктов нужно иметь специальную технологию для защиты данных, входящих в состав их продукта. Без такой технологии им остается полагаться лишь на организационные (а не технические) меры предотвращения нелегального тиражирования и использования их продуктов. В этом случае они, как правило, оказываются совершенно беззащитными перед компьютерными пиратами.
Особенности защиты данных в информационных продуктах
Любая технология защиты данных должна основываться на криптографии. Это означает, что данные следует распространять в зашифрованном виде, причем ключ шифрования необходимо хранить в электронном ключе. Итак, для доступа к данным не обойтись без электронного ключа, как и при защите программного кода.
Система защиты в этом случае должна обеспечить возможность дешифрования данных при их чтении из файла и шифрования - при записи.
Классификацию систем защиты данных можно проводить по следующим ключевым признакам.
1. Способы вызова операций шифрования
Вызов операций шифрования данных связан с операциями файлового ввода-вывода. После чтения данных из зашифрованного файла необходимо вызвать процедуру, которая расшифрует прочитанные данные. Перед записью данных в файл их следует зашифровать.
Существует два способа вызова операций шифрования: явный и неявный.
В первом случае в исходный текст программы просмотра встраиваются вызовы операций шифрования. Таким образом, за каждой операцией низкоуровневого чтения из файла должно следовать обращение к функции расшифровки данных, а перед каждым вызовом операции записи - вызов функции шифрования.
Во втором случае программа разрабатывается так, как будто она предназначена для работы с открытыми данными. Система защиты перехватывает операции файлового ввода-вывода, определяет, какое приложение к какому файлу обращается, и выполняет необходимую обработку данных. Такой способ называют еще “прозрачным” (online, on-the-fly) шифрованием.
Достоинство явного вызова операций шифрования - в его большей стойкости, так как стойкость тем выше, чем выше степень интеграции приложения и системы защиты.
Присущи ему и некоторые недостатки. Это, во-первых, меньшая универсальность (для каждого средства разработки приложений необходим свой набор процедур). Во-вторых, встраивание вызовов процедур, как правило, оказывается чрезвычайно трудоемким делом. В-третьих, не во всех системах имеется низкоуровневый интерфейс файлового ввода-вывода. И наконец, не всегда программа просмотра создается производителем или распространителем данных.
2. Способы встраивания системы защиты в программу просмотра
Существует два способа встраивания системы защиты в программу просмотра.
- Ручное встраивание: соответствующие процедуры встраиваются в исходный текст программы просмотра.
- Автоматическое встраивание: процедуры системы защиты встраиваются в программу просмотра путем обработки ее исполняемого модуля (так называемый “конверт”).
- Очевидно, что второй способ удобнее. Однако автоматическому встраиванию присущи некоторые недостатки. Программа просмотра не всегда раcпространяется вместе с данными и, следовательно, не может быть защищена “конвертом”. Например, в случае, когда защищается база данных для MS Access, программой просмотра становится собственно система MS Access.
Ручное встраивание может применяться как в системах с явным вызовом процедур шифрования, так и в системах “прозрачного” шифрования. Автоматическое встраивание, как правило, применяется только в системах “прозрачного” шифрования.
3. Используемый алгоритм шифрования
По этому параметру системы различаются следующим образом.
- ПО, использующее какой-либо известный алгоритм шифрования.
- ПО, использующее частный алгоритм шифрования.
При выборе системы для защиты данных предпочтение следует отдать системе, использующей известный алгоритм шифрования. Это связано с тем, что такой криптографический алгоритм тщательно анализируется независимыми экспертными группами. Частный криптографический алгоритм не подвергается такой экспертизе, а поэтому может и не обеспечить необходимой стойкости.
4. Поддержка файловых операций, допустимых в данной системе
Данный пункт относится только к системам “прозрачного” шифрования. Такая система может перехватывать все допустимые в данной ОС файловые операции, а может только часть - основные, с точки зрения разработчика.
Универсальная система “прозрачного” шифрования должна перехватывать все виды файловых операций, допустимых в данной ОС.
Например, система “прозрачного” шифрования для MS-DOS должна поддерживать файловые операции через управляющие блоки файла (FCB) и через описатели файлов (file handle).
Аналогичная система для Windows 95 должна поддерживать операции через интерфейс MS-DOS, интерфейс Win16, интерфейс Win32, файлы, проецируемые в память (memory-mapped files), именованные каналы (named pipes). В систему для Windows NT дополнительно следует ввести поддержку асинхронного файлового ввода-вывода.
Существующие средства защиты данных
Ныне, благодаря своим очевидным преимуществам, основное распространение получили системы “прозрачного” шифрования. Рассмотрим наиболее популярные системы, их достоинства и недостатки.
1. Система “прозрачного” шифрования файлов данных, входящая в состав пакета SentinelShell v.4.x. Производитель - фирма Rainbow.
Пакет SentinelShell является “конвертом”, который позволяет установить систему защиты данных с “прозрачным” шифрованием.
Этот продукт ориентирован на защиту MS-DOS- и Win16-приложений, а также на защиту данных, с которыми эти приложения работают. Указываются список имен и масок файлов, подлежащих шифрованию в процессе защиты, и обращения, на которые будет реагировать ядро системы. ПО работает с электронными ключами Sentinel Pro и Sentinel SuperPro.
Используемый алгоритм шифрования не называется, поэтому можно предположить, что в системе используется алгоритм собственной разработки.
Главные преимущества - простота и легкость установки и использования, а также удобный графический интерфейс. Недостатки некорректная работа защищенного DOS-приложения с зашифрованными данными в окне Windows 3.x с включенным 32-разрядным доступом к файлам.
2. Система “прозрачного” шифрования файлов данных, входящих в состав пакета HL-CRYPT. Производитель - фирма FAST Software Security AG.
Данная система очень похожа на предыдущую. HL-CRYPT защищает DOS- и Win16 приложения и файлы данных, с которыми приложение работает. Недавно компания анонсировала систему для защиты приложений Win32 и данных. Система работает с ключами HardLock EYE и HardLock Twin.
Используется алгоритм шифрования собственной разработки, причем сами процедуры шифрования аппаратно реализованы в ключах HardLock.
Эта система интересна тем, что она поддерживает полный спектр ОС, от MS-DOS до Win32, причем поддержка Win32 универсальна, то есть одна и та же защищенная программа может работать и в Windows 95, и в Windows NT.
3. Система “прозрачного” шифрования, входящая в состав инструментального средства Professional ToolKit. Производитель - компания Aladdin Software Security.
В состав пакета Professional ToolKit входит “конверт”, позволяющий защищать данные, с которыми работает приложение.
Указывается список имен файлов, подлежащих шифрованию в процессе защиты, и операции, которые будут обрабатываться ядром системы защиты. Пакет работает с электронными ключами HASP3, MemoHASP, TimeHASP и NetHASP.
Применяемый алгоритм шифрования - IDEA (International Data Encryption Algorithm - международный алгоритм шифрования данных) с длиной ключа 128 бит, причем для формирования ключа используются возвратные значения функции f(x), аппаратно реализованной в ключе.
Все перечисленные системы являются системами “прозрачного” шифрования с автоматическим встраиванием.
4. Professional ToolKit for Windows’95 - система “прозрачного” шифрования файлов данных для Windows 95. Производитель - Aladdin Software Security.
Эта система является практически единственной специализированной системой защиты файлов данных. Она представляет собой набор утилит, библиотек и VxD-драйверов для обеспечения полного жизненного цикла работы с “прозрачным” шифрованием файлов данных. Система работает с ключами, содержащими память: MemoHASP, TimeHASP, NetHASP.
Перед поставкой конечному пользователю данные зашифровываются специальной утилитой. В системе используется алгоритм шифрования RC4. Также можно использовать алгоритм шифрования ГОСТ 28147-89. Ключ шифрования формируется с применением возвратных значений функции f(x), аппаратно реализованной в электронном ключе HASP.
В программу просмотра встраивается вызов процедуры авторизации приложения, причем для этого можно использовать любой макроязык, например Visual Basic for Applications. При этом вместе с зашифрованными данными необходимо поставлять и небольшую программу авторизации, написанную на макроязыке.
В системе устанавливается VxD-драйвер, который осуществляет перехват операций файлового ввода-вывода. Поддерживаются все виды файловых операций, допустимых в Windows 95.
Драйвер поддерживает неограниченное число открытых файлов и приложений, работающих с зашифрованными файлами.
Данная система является системой “прозрачного” шифрования с ручным встраиванием. Она позволяет поставлять защищенные от несанкционированного тиражирования и доступа данные без защищенной программы просмотра.
Заключение
Ведущие разработчики технологий защиты ПО предоставляют производителям информационных продуктов средства для защиты как программ, так и данных. Но эти средства зачастую являются лишь дополнительной (и второстепенной) опцией других средств, как правило “конвертов”.
Во всяком случае, выбирать есть из чего, и любой производитель информационных продуктов может подобрать для себя приемлемую технологию с учетом необходимой надежности и стойкости, своего производственного цикла и других специфических требований.
Алексей Раевский, Сергей Груздев
Об авторах. Алексей Раевский и Сергей Груздев работают в компании Aladdin Software Security R.D. Ltd. Связаться с ними можно по телефону: (095) 923-0588 или по электронной почте:
aladdin@aladdin.msk.ru.