Обсуждение статьи "Защита MQL5-программ: пароли, ключи, ограничение по времени, удаленная проверка лицензий" - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы также можете заменить входную дверь на усиленную стальную, но это ничего не даст, если вы оставите ключ на половичке. Описанная вами защита хороша для случайного кодера, но точно не для мотивированного злоумышленника.
Вопрос здесь не в шифровании - это самая простая часть, - а в том, как вы обращаетесь с ключами и процессом дешифрования.
В сценарии, где злоумышленница, в классической терминологии назовем ее Мэллори, хочет скопировать и распространить EX5, к которому у нее есть ключ, она, конечно, может это сделать, выполнив следующие действия:
i. запустить EX5 с ключом;
ii. следить за процессом во время его выполнения, например, прикрепив к нему DLL, и выгружать содержимое EX5 сразу после его расшифровки;
iii. пересборка EX5 с открытым текстом (и потенциальная разборка в исходный текст, если вас это не затруднит).
Если защита по первому пункту включает проверку подписи, то для распространения файлов злоумышленнику достаточно распространить другой исполняемый файл MQL с заменой соответствующих открытых ключей. Если MQL5 использует криптографический API для проверки сертификата, то его можно вырвать из бинарного файла. И так до бесконечности.
И это все до того, как вы начнете рассматривать кошмар, который будет представлять собой управление ключами.
Хотя подобный анализ бинарных файлов сейчас не в моих силах, я знаю нескольких человек, которые могут сделать это без проблем. Так что вам следует беспокоиться не о силе шифрования, а о том, что у вас недействительная модель безопасности. Это не конкретная проблема как таковая, поскольку никто не ожидает от MetaTrader решения этой проблемы - есть другие очень удобные решения этой проблемы, в частности, если владелец кода MQL5/EX5 запускает его на отдельном сервере, который он контролирует, и лицензирует доступ/сигналы для покупателей.
Поэтому я не могу понять, зачем людям нужна эта возможность, если ее так сложно реализовать должным образом, по крайней мере, без аппаратных средств защиты от несанкционированного доступа.
Для реальной защиты я рекомендую следующее:
Для базовой защиты исходного кода достаточно запихнуть как можно больше функций в dll. Минимальный код для интерфейса между MT5 и программированием - это нормально. Я бы не стал доверять полному исходному коду в ex4/ex5, если только вы не отдаете свое программное обеспечение. Но эта статья о защите вашей интеллектуальной собственности для платных/коммерческих продуктов или бесплатных продуктов, где исходный код не предоставляется.
Для лицензирования лучшей защитой является наличие отдельных демо- и реальных версий комбинации ex4/dll. Компромисс заключается в том, что это немного больше хлопот для разработчика и клиента, поскольку разработчику приходится поддерживать/создавать две версии своего программного обеспечения. Но вы уменьшаете вероятность того, что кто-то получит взломанный доступ к полной версии программного обеспечения; они могут использовать только демо-версию. Многое зависит от цели демонстрации. Если вы хотите предложить клиенту полную функциональность, то
Также внедрите лицензирование, которое может потребовать, чтобы небольшая часть важного кода была запущена удаленно, прежде чем можно будет запустить локальное программное обеспечение. CNS SaaS (Software as a Service) фактически сделала именно это, и это называется функциями CCoHS (Call code on hosted server). Вы можете разместить ограниченную часть кода, необходимую для правильной работы вашего эксперта, в размещенном моде.Тогда даже если кто-то сбежит с советником или каким-то образом взломает лицензионную dll, она все равно станет бесполезной. Существует задержка между сервером размещенного кода и серверами советника и/или лицензирования, но это можно обойти. Реализация не слишком сложна, но пользователю придется найти способ реализовать CCoHS на своих собственных серверах. Если у вас небольшая компания, вы можете сделать это на бюджетном сервере или где-нибудь еще, а затем увеличить масштаб, когда ваша база подписчиков вырастет.
Хостируемые функции, хотя и самые дорогие из всех вариантов, обеспечивают реальную защиту на случай, если кто-то сможет декомпилировать вашу dll, что очень маловероятно. Скорее всего, они "взломают" dll, чтобы заставить вашу программу работать. Но без необходимых хостируемых функций она все равно будет бесполезна. Если я ничего не упустил.
Опубликована статья Защита MQL5-программ: пароли, ключи, ограничение по времени, удаленная проверка лицензий:
Автор: investeo
3. Привязка к счету- пробовал привязать работу советника к счёту. Защита не работает, выдает сообщение /работа советника на данном счёте не разрешена/ , а советник всё равно торгует. При компиляции ошибок нет. Не пойму в чём дело.
Где должна быть размещена эта строка кода. ??
Здравствуйте, у меня вопрос, хочу продавать советника на своем сайте, но не знаю как это сделать, есть кто, кто может помочь?
Заранее спасибо!
Привет,
Спасибо за статью. Посоветуйте, пожалуйста, как сделать так, чтобы при вводе пароля на экране отображалась звездочка ("*") или точка ("-").
Я не очень хороший программист.
Спасибо
Извините за язвительность, но то, что представлено в статье, - это не безопасность, а неясность. Защита от копирования - чрезвычайно сложная проблема, отсюда и усилия музыкальной и киноиндустрии с DRM и их постоянные неудачи.
В лучшем случае, информация, приведенная здесь, потратит время некоторых людей; в худшем - вы можете дать читателю ложное чувство безопасности. Если он решит "защитить" продукт, используя ваши советы, он может быть несколько удивлен, когда его потребитель удалит защиту в течение нескольких часов и перепродаст его за бесценок.
Серьезно - кодирование base64 не имеет отношения к шифрованию. Кодирование base64 было разработано для безопасной передачи 8-битных данных с помощью протоколов, которые считают кодировку данных 7-битной. Вы можете тривиально обратить кодирование base64 - и оно предназначено именно для этого!
Единственное решение, которое я вижу для безопасного распространения программного обеспечения MQL5, - это либо использование ограниченной доверенности брокера, либо установка экземпляра MQL5 с файлами .ex5 где-нибудь на сервере и предоставление клиенту доступа с помощью тонкого клиента (чтобы он не мог скачать .ex5). И да, я проработал в сфере информационной безопасности более 15 лет, поэтому имею достаточное представление о том, о чем говорю.
Честно говоря, я удивлен, что Metaquotes опубликовала эту статью.
Здравствуйте добрый день консультация Мне нужна помощь, чтобы быть в состоянии достичь использования советника по номеру счета в mt4 и что позволяет мне изменить и что может работать только счета, которые находятся в пределах лицензии и что может включить и отключить его удаленно, как он использовал два mt4 один мастер и один ведомый Я прилагаю описание кода и как я могу лучше, чтобы он работал хорошо, потому что если я ввожу другой счет, который находится вне лицензии он работает то же самое.
<?xml version="1.0" encoding="UTF-8"?>
<лицензия>
<programVersion>
</programVersion>
<licenseType>Full</licenseType>
<validityPeriod>
<Дата окончания>1/18/2080</Дата окончания>
</validityPeriod>
<Владельцы
<Имя владельца>
<Счет>6789</Счет>
<Счет>7994</Account
<Счет>22302</Счет>
</ownerName
</Owners>
<Подпись xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo
<Метод канонизации Алгоритм="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Трансформы
<Трансформа Алгоритм="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Алгоритм="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>Cl8vF8+Uyyms3pEodjip5ol5J4s=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue p/NlTyHeUy5CVC01H/2WmvTcN8TqJhrInkhqtyzR6vqn/koJHqm6fiD6mepklpn4fud0em7vqOiyWcQ9KQ8jqoyoN9ExkJUEvepWBQT2HHHcaoW2kpV17ch+CZvtFX74cHE23WrOi9/p3RoK/4G0rsgvdjvefdZRQRsM5k=</SignatureValue>.
</Signature>
</license>
У меня есть идея. Предположим, есть веб-монитор, который постоянно просматривает веб-поток.
1. Клиент EA обращается к веб-серверу за ключом sha.pub, который генерируется сервером случайным образом.
2. EA отправляет некоторые данные с запросом на авторизацию на сервер с ключом pub, так что монитор не может знать, что это за данные. При этом в данных может содержаться некоторый случайный ключ, сгенерированный клиентом. Монитор не может расшифровать эти данные из-за ключа sha.
3. Сервер получил данные и отправил разрешенную информацию, зашифрованную ключом, который отправил ему клиент. Монитор может расшифровать эту информацию, потому что он может знать ключ sha паба, но он не знает ключ клиента, так что это все равно бесполезно.
Таким образом, сервер может контролировать поведение клиента EA.
Здравствуйте, можно ли обновить эту статью с учетом нового релиза Python?
Я не могу заставить его работать. PS: Python все еще новый для меня.
Спасибо,
Дэнни