Многие разработчики задаются вопросом: действительно ли установка пароля на общий модуль или модуль объекта гарантирует безопасность интеллектуальной собственности? Проанализируем ситуацию, с которой сталкиваются программисты, когда пришедшие на их место специалисты заявляют, что легко вскрыли пароли на модулях с помощью утилит. Выясним причину такой уязвимости и рассмотрим, как на самом деле можно надежно защитить свои алгоритмы.
Рассмотрим подробнее, для чего вообще используется этот функционал. Чаще всего пароли ставят для защиты авторских алгоритмов (ноу-хау), попытки привязать клиента к конкретному специалисту или при конфликтных ситуациях. Однако штатная установка пароля в Конфигураторе 1С:Предприятия не использует стойкое криптографическое шифрование самого исходного текста.
Посмотрим на архитектуру платформы. Текст модуля физически сохраняется внутри базы данных или файла внешней обработки в бинарном контейнере формата 1С. Скрытие текста обеспечивается лишь проверкой определенного флага и хэша при попытке открыть модуль в конфигураторе. Фактически, данный механизм является скорее защитой от случайного редактирования пользователем, а не серьезным барьером для другого программиста. Из-за этой архитектурной особенности защита уязвима: она обходится путем модификации структуры файла на уровне байтов без необходимости угадывать сам пароль методом перебора (брутфорсом).
Если доступ к модулю был утерян легитимно (например, пароль забыт, а разработчик недоступен), проанализируем доступные пути решения:
Поскольку мы выяснили, что штатный пароль обходится достаточно легко, разберем по шагам альтернативные подходы, которые применяются для реальной защиты коммерческого кода в среде 1С. Если вы хотите продавать свои разработки или защищать ноу-хау, рассмотрите следующие методы:
РасчетнаяБаза, заменяются на бессвязные наборы символов, удаляются отступы и комментарии. Даже если защита на такой модуль будет снята, злоумышленник увидит нечитабельный код, на разбор которого уйдет больше времени, чем на написание нового.Подводя итог, можно сделать вывод: штатный пароль на модули в 1С спасает только от неквалифицированного вмешательства и легко вскрывается. Для серьезной защиты коммерческих решений всегда используйте СЛК, обфускацию или вынос логики за пределы базы.