Аннотация
В статье рассматривается методика, создания программного модуля защиты системы управления базой данных, от несанкционированного доступа.
Низкая защищенность компании на информационном уровне, нередко приводит предприятия к банкротству, как умышленному с использованием различных законных и не законных приемов и методов со стороны конкурентов и недоброжелателей, так и неумышленному по вине персонала компании. Все это можно представить в виде двух основных блоков-проблем обеспечения информационной безопасности:
· Утечка конфиденциальной информации, представляющей коммерческую тайну.
· Искажение внешней и внутренней финансовой, а так же управленческой отчетности.
Следует отметить, что обеспечение информационной безопасности организации, т.е. устранение выше перечисленных проблем, является приоритетной задачей при антикризисном управлении предприятием.
Антикризисное управление подразумевает выведение предприятия из кризисов различного рода, возникающих в разные периоды деятельности компании. В основном такие кризисы связаны с финансами, т.е. с нарушением баланса в основной составляющей любого хозяйствующего субъекта, но немалая доля кризисов связана с проблемами информационной безопасности, т.к. они являются катализатором ряда других причин, в том числе и финансовых.
Без обеспечения информационной безопасности практически невозможно вывести предприятие из кризиса, т.к. данная мера позволит устранить только последствия кризиса, а основные причины, генерирующие кризисы останутся неизмененными и могут возобновиться в дальнейшем.
Суть метода системы защиты
В статье рассмотрена защита локальной системы управления базой данных от несанкционированного использования, основная идея которой, состоит в следующем:
При каждой загрузке приложения происходит подсчёт количества запусков и отработанных часов. Данные о количестве запусков и часах хранятся в реестре Windows. При запуске также выполняется проверка, не превышают ли количество запусков и отработанных часов критических значений, установленных разработчиком. Если одно из значений выше критического, то приложение выдаст сообщение о несанкционированном доступе и закроется, не давая возможности работать с базой данных.
Особенность данного механизма защиты в отличии от существующих аналогичных систем, заключается в том что, данные о количестве запусков хранятся сразу в нескольких разделах реестра Windows. То есть, если взломщик отследит и обнулит регистр в реестре Windows, все равно доступ к информации не будет получен, так как приложение, перед проверкой условий запуска, в обнулённый раздел реестра внесёт значение одного из резервных регистров.
Эта схема первоначально разрабатывалась для защиты от нелицензионного доступа к информационным ресурсам, но привлекательность использования этой идеи для несанкционированного доступа заключается в том, что закодированное входное значение не остаётся постоянным, как это принято в классическом виде, в нашем случае оно постоянно изменяется, так как идёт постоянный отсчёт количества отработанных секунд, и тем самым сбивая взломщика с истинного пути.
Однако для применения этой технологии против несанкционированного доступа, ещё дополнительно создаётся программа-ключ, с помощью которой, пользователь сможет заносить в реестр критические значения, при которых система будет блокироваться. Эта же программа должна открывать систему для доступа, соответственно занося в реестр данные ниже критических значений.
И в дополнение имеющегося, для создания дополнительной степени защиты, можно всю информацию о количестве запусков и отработанном времени использовать в зашифрованном виде. Тогда в программу нужно будет добавить функции шифровки и дешифровки данных. Функция шифрования должна активизироваться перед передачей данных в реестр, а функция дешифровки соответственно после получения данных из реестра.
Помимо использования реестра, приложение также создаёт резервный файл на локальном диске, с аналогичными данными. То есть если все регистры будут обнулены, тогда приложение воспользуется значениями из файла. Этим шагом мы пытаемся опередить взломщика, удачно разобравшегося с реестром, возвращая его к отсутствию положительного результата.
Алгоритм защиты
Суть заключается в том, что приложение даёт возможность пользователю работать с программой какое-то время, допустим 100 часов. По истечению этого периода приложение не запускается, выдавая сообщение о несанкционированном использовании продукта. Параллельно с подсчётом количества наработанных часов, система подсчитывает количество запусков.
Список переменных
Starts-количество запусков
Starts2 – количество запусков (резервная переменная)
FileVar, AllTicks и Watch - количество отработанных и резервные переменные
Max – максимальное значение
Допустим количество запусков не должно превышать 350. Если хотя бы одно из ограничений превысит лимит, то приложение работать не будет. У пользователя будет специальный электронный ключ, которым можно снять ограничения и продолжить работу.
При каждой загрузке выполняется подсчёт количества запусков системы. Также считается количество наработанных часов. Эти данные сохраняются в двух файлах на логических дисках и в трёх разделах реестра. Каждые десять секунд данные в файлах и реестре обновляются. При этом, когда приложение получает данные о количестве часов и количестве запусков, оно сравнивает данные по количеству запусков и найдя максимальное значение, присваивает его всем переменным хранящим данные о количестве запусков. Аналогично происходит и с переменными хранящими данные о количестве наработанных часов. То есть, даже если, желающий продлить срок работы программы, отследит событие записи в реестр и в файл, и догадается, о том, что нужно обнулить значение переменной, чтобы отсчёт начался заново, приложение всё равно исправит обнулённое значение на максимальное.
Событие OnShow (появления формы) вызывает функция LoadProtectParam, которая, открывает реестр и считанные значения присваивает переменным AllTicks и Watch, а также если существует локальный диск D то из файла 'd:\sys.drv' считанное значение присваивает переменной FileVar.
Добавленный на главную форму таймер TimerCountTicks по событию OnTimer с интервалом 1 секунду будет определять максимальное значение из переменных AllTicks, Watch и FileVar которые накапливают количество отработанных секунд. Все эти значения переменных берутся из реестра и из файла с локального диска. И максимальное определённое значение, присваивается всем трём переменным.
Далее их значения заносятся в реестр с помощью процедуры OnTimer, генерируемую ещё одним таймером TimerSendMessageTimer с интервалом действия 10 секунд. По этому событию будет вызываться функция SaveProtectParam для сохранения данных в реестре и в файлах на локальных дисках. Затем в этой же процедуре выполняется проверка не истек ли срок использования или не превышает ли количество запусков выше лицензионного лимита. Если истек, то приложение будет отключаться с соотвествующим сообщением о нелицензионном использовании.
Это выполняется на тот случай, когда при попытке не лицензионно открыть программу, программисту удастся отследить хотя бы один раздел реестра, в котором хранятся данные о количестве запусков, то обнуление этого регистра реестра не принесёт для него положительного результата.
Ведь обнулённое значение в реестре, заменится приложением на максимальное из значений резервных переменных. Чтобы осуществить не лицензионный доступ нужно одновременно внести изменения всех трёх параметров из реестра и двух с жёсткого диска. А отследить сразу пять событий уже сложнее, причём пять переменных с разными значениями (3 переменные - кол-во запусков, 2-е кол-во отработанных секунд) всё это внесёт дополнительную неясность для желающих получить нелицензионный доступ.
- +
- +
- +
Список использованной литературы
1. Угрозы экономической и информационной безопасности предприятия. - http://www.safetyfactor.narod.ru/doc/threat.html
2. Информационные технологии современной России. – http://www.rbc.ru
3. Кувшинников А.С. Обеспечение информационной безопасности организации как метод антикризисного управления. – Московская Финансово-Юридическая Академия