|
|
|
|
|
Еще во времена DOS появились программы, позволяющие создавать защищенные диски, содержимое которых становилось доступным только после того, как пользователь вводил правильный пароль. На первый взгляд, защитить информацию в подобных условиях не очень сложно, но разработчики часто не справлялись с поставленной задачей. Одной из первых программ, позволявших защищать диски, была программа Stacker, разработанная компанией Stac Electronics, Inc. Точнее, Stacker предназначался для создания сжатых дисков, поддерживающих упаковку и распаковку информации "на лету". Но одна из опций позволяла защитить хранимую на диске информацию паролем. Однако в программе использовалась плохая хэш-функция, вследствие чего сложность подбора пароля, пригодного для расшифровки диска, была всего 2s, т. е. пароль подбирался моментально.
|
|
|
|
|
|
|
|
|
Уже на протяжении многих лет программы, входящие в Microsoft Office, позволяют зашифровывать документы по паролю, вводимому пользователем. Однако далеко не всегда данные оказываются защищены должным образом. Шифрование файлов было реализовано уже в Microsoft Word 2.0. Из пароля с помощью легко обратимого алгоритма получалась 16-байтовая гамма, которая накладывалась на содержимое документа. Но вычисление гаммы без пароля не составляло никакого труда, т. к. гамма накладывалась и на служебные области, которые имели фиксированное значение во всех документах. В Word 6.0/95 и Excel 5.0/95 алгоритм шифрования не претерпел значительных изменений, но изменился формат файлов — он стал основываться на хранилище OLE Structured Storage. Для восстановления пароля документа все также требовалось найти 16-байтовую гамму, использованную для шифрования данных.
|
|
|
|
|
|
|
|
|
Уже на протяжении многих лет программы, входящие в Microsoft Office, позволяют зашифровывать документы по паролю, вводимому пользователем. Однако далеко не всегда данные оказываются защищены должным образом. Шифрование файлов было реализовано уже в Microsoft Word 2.0. Из пароля с помощью легко обратимого алгоритма получалась 16-байтовая гамма, которая накладывалась на содержимое документа. Но вычисление гаммы без пароля не составляло никакого труда, т. к. гамма накладывалась и на служебные области, которые имели фиксированное значение во всех документах. В Word 6.0/95 и Excel 5.0/95 алгоритм шифрования не претерпел значительных изменений, но изменился формат файлов — он стал основываться на хранилище OLE Structured Storage. Для восстановления пароля документа все также требовалось найти 16-байтовую гамму, использованную для шифрования данных.
|
|
|
|
|
|
|
|
|
Многие современные программы упаковки данных (архиваторы) имеют встроенную поддержку шифрования. Если пользователь пожелает защитить от чужих глаз информацию, находящуюся в архиве, ему надо при упаковке ввести пароль, а архиватор сам выполнит все остальные действия. При попытке извлечения зашифрованного файла архиватор запросит у пользователя пароль и распакует файл только в том случае, если пароль верен. Стоит отметить, что зашифрование всегда выполняется после компрессии, т. к. зашифрованные данные должны быть неотличимы от случайной последовательности, и, следовательно, архиватор не сможет найти в них избыточность, за счет удаления которой и происходит упаковка.
|
|
|
|
|
|
|
|
|
Некоторые производители программного обеспечения позволяют всем желающем скачать инсталлятор программы с официального интернет-сайта. При этом инсталлятор может быть защищен таким образом, что для установки программы необходимо знать некоторую информацию, которую производитель сообщит только после получения оплаты. Однако далеко не все разработчики знают, что некоторые способы защиты инсталляторов совсем не так безопасны, как хотелось бы.
|
|
|
|
|
|
|
|
|
Когда программа получила от пользователя регистрационную информацию, не обязательно сразу же определять ее правильность и информировать об этом пользователя. Если все проверки сосредоточены в одном месте, противнику гораздо легче определить, откуда начинать анализ. Предпочтительнее выглядит следующий подход. При вводе регистрационной информации выполняется первичная проверка, предназначенная скорее для исключения ошибок набора с клавиатуры, чем для защиты. Если введенная информация кажется правильной, она сохраняется на диске (в файле или реестре) и пользователю выдается сообщение с благодарностью за регистрацию и предложением перезапустить программу, т. к. только после перезапуска будут активированы все функции, недоступные в бесплатной оценочной версии. После перезапуска программа читает с диска регистрационную информацию и тиражирует ее в памяти в нескольких экземплярах. Это делается для того, чтобы противнику сложнее было найти место, где программа интерпретирует регистрационные данные.
|
|
|
|
|
|
|
|
|
Для того чтобы потенциальные пользователи смогли лучше оценить возможности программы, разработчики часто распространяют демонстрационные версии своих продуктов. Такие версии, как правило, имеют ограниченный набор функций и/или ограничение на время использования или количество запусков программы. Условно бесплатные продукты обычно являются ограниченными версиями, которые предоставляют пользователю возможность ввода регистрационного кода, после чего все ограничения снимаются.
|
|
|
|
|
|
|
|
|
Некоторые широко распространенные языки программирования в процессе компиляции преобразуют исходный текст в так называемый псевдокод — некоторое промежуточное представление текста программы, не являющееся машинным кодом. К таким языкам можно отнести Clipper, C#, FoxPro, инсталляционные сценарии InstallShield, Java, Maplnfo Map Basic, MicroStation MDL, Python, Visual Basic и многие другие. При выполнении программы виртуальная машина интерпретирует псевдокод и выполняет его на виртуальном процессоре. Теоретически использование виртуальной машины может являться эффективным способом противодействия исследованию программы, т. к. до начала анализа алгоритма необходимо разобраться с устройством виртуальной машины. Но это справедливо только для ситуации, когда система команд, применяемая машиной, нигде и никем не была описана, т. е. является уникальной.
|
|
|
|
|
|
|
|
|
Протекторы призваны обеспечить защиту содержимого исполняемого файла от исследования и модификации. Но часто получается, что защищенная программа по некоторым характеристикам оказывается для пользователя хуже, чем та же программа, но без защиты. Прежде всего, протектор — это дополнительный объем кода. Если протектор не поддерживает упаковку защищаемых данных, размер файла на диске в процессе защиты увеличится на размер самого протектора. Правда, стоит отметить, что при использовании сжатия защищенный файл может оказаться меньше оригинального в несколько раз. Также код протектора требует и некоторого количества оперативной памяти. Но основной перерасход ресурсов оперативной памяти происходит по другой причине, связанной с особенностью загрузки исполняемых файлов в Win32. Практически все современные операционные системы имеют встроенную поддержку так называемых файлов страничной подкачки (Page File или Swap File). Вся логическая память, доступная выполняемым программам, разбивается на страницы, и некоторые редко используемые страницы могут оказаться не в оперативной памяти, а на диске в файле подкачки. При любом обращении к такой странице менеджер памяти выполняет операцию чтения данных с диска в оперативную память (подкачку). Если в оперативной памяти нет свободных страниц, одна из наиболее редко исполь- зуемых страниц вытесняется из оперативной памяти на диск. В Win32 также существует механизм файлов, отображаемых в память (Memory Mapped Files), который позволяет отобразить в адресное пространство любой дисковый файл.
|
|
|
|
|
|
|
|
|
В настоящий момент разработано достаточно большое число протекторов исполняемых файлов. Многие из них бесплатны и созданы энтузиастами, которым просто интересно попробовать свои силы в защите программ. Разумеется, есть и коммерческие протекторы. А некоторые протекторы являются составляющими частями более сложных комплексов, включающих в себя привязку к аппаратным ключам или компакт-дискам. Рассмотрим основные характеристики нескольких наиболее интересных протекторов.
|
|
|
|
|
|
|