На
практике в подавляющем большинстве случаев программисты не
используют все возможности, предоставляемые аппаратными ключами.
Очень часто в алгоритмических ключах с памятью используется
только память, не говоря уже о случаях, когда все проверки
наличия ключа производятся в одной функции, которая возвращает
результат в виде логического значения. И для получения
полнофункциональной версии программы даже не требуется ключ—
достаточно исправить функцию проверки, чтобы она всегда
возвращала состояние, соответствующее наличию ключа.
Некоторые
ключи (например Sentinel SuperPro) имеют довольно сложную
систему разграничения доступа. Ключи Sentinel SuperPro
поддерживают пароли для активации алгоритмов, выбираемые при
программировании, и раздельные пароли для записи и перезаписи,
одинаковые для всех ключей одной серии, поставляемых одному
разработчику. И очень часто в теле программы оказывается пароль
перезаписи, который позволяет противнику перепрограммировать
ключ по своему усмотрению.
Ключи HASP
Time, напротив, не имеют разграничения доступа — для того чтобы
изменить время в ключе, нужно знать те же самые пароли, которые
используются для чтения времени. То есть противнику для
продления периода работоспособности программы, ограниченной по
времени, достаточно отвести назад часы в ключе, и ничто не
мешает ему это сделать.
Некоторые
неизвестные алгоритмы, реализованные в ключах, были подвергнуты
анализу. Так был восстановлен алгоритм функции используемой в
ключах HASP. А по некоторым сообщениям в Интернете, не являются
больше секретными и реализуемые ключами Sentinel SuperPro, и
даже новые алгоритмы кодирования и декодирования в ключах
HASP4.
Ключи с
асимметричными алгоритмами выпускаются уже многими
производителями, но позиционируются как устройства для
идентификации и аутентификации, а не для защиты информации. А
ключи с программируемым алгоритмом, напротив, не выпускаются
крупнейшими производителями ключей и, следовательно, практически
не применяются. Возможно, это обусловлено тем, что они
получаются слишком дорогими или слишком сложными для
использования.
Утверждение, что аппаратные ключи способны остановить
компьютерное пиратство, является мифом, многие годы
распространяемым производителями ключей. Для хорошо
подготовленного противника ключ редко является серьезным
препятствием. К тому же, часто программисты слепо доверяют
автоматизированным средствам защиты, поставляемым в составе
SDK-ключа, и не прикладывают самостоятельных усилий для усиления
защиты. Обещания производителей создают иллюзию защищенности, но
на самом деле практически для всех автоматизированных средств
защиты давно разработаны эффективные способы нейтрализации
защитных механизмов.
Большая часть
защитных механизмов, применяемых в современных ключах,
оказывается работоспособной только в предположении, что
противник не сможет обеспечить эмуляцию ключа, т. е. реализуются
на программном уровне. Следовательно, почти всегда тот же
уровень защиты может быть достигнут без привлечения аппаратных
средств.
|