Поскольку за последние несколько дней тема продажи алгоритмов стала популярна, решил написать немного на тему защиты интеллектуальной собственности.
Так уж получилось, что перед тем как заняться количественным анализом и алгоритмами я более десяти лет посвятил защите программного обеспечения от пиратства и до сих пор тесно связан с этим вопросом.
Так вот, основной проблемой при продаже роботов является защита алгоритма от изучения, пожалуй, за исключением тех случаев, когда этот алгоритм полностью описан и отдается заказчику. В том случае, когда продается черный ящик, алгоритм должен быть надежно спрятан. Сказать это намного проще, чем сделать и тут все зависит от технологии реализации.
Вариантов может быть несколько и самый простой для защиты — это когда программа собирается в исполняемый машинный код (native code). Этот код можно изучать с помощью дизассемблеров, некоторые из них (IDA) позволяют привести его к виду C. Для защиты от изучения можно использовать так называемые конверты, которые выполняют две основные функции: обфускация (затемнение) кода и вируализация. Этот код изучать значительно сложнее. Тут я могу смело порекомендовать VMProtect, с автором которого мы сотрудничаем долгое время.
Вариант номер два: робот на .NET, скомпилированные скрипты Wealth-Lab, Ninja Trader. Думаю, это самый распространенный вариант. Тут возможно использование обфускатора кода и паковщика, но оба варианта ненадежны, так как код сборки легко достается перед выполнением а обфускатор снимается деобфускатором, а далее приводится к виду исходника с помощью многочисленных декомпиляторов. Изучая вопрос, я находил специальный обфукатор для скриптов Ninja стоимостью US$1500, но в действии его не видел и вероятность, что это надежное приложение на фоне всех остальных, оцениваю как чрезвычайно низкую.
Вариант три: скриптовые языки: Quick, eSignal, еще что-то. Не знаю, как квик, но eSignal, например, позволяет компилировать модули в защищенном варианте. Честно говоря, степень надежность оценить не могу. Скорее всего, все сведется к расшифровки кода после загрузки.
Собственно, решение проблемы с вариантами два и три мне видится как создание модуля с нативным кодом, содержащего алгоритм, защита этого модуля и организации интерфейса из .NET или скрипта.
Существует идеальный вариант защиты, исходя из критериев надежность/скорость работы/удобство пользователя. Это электронный ключ с технологией исполняемого кода. Существует несколько ключей различных производителей, я расскажу про
SenseLock, который мы здесь продаем. Не сочтите за откровенную рекламу, я действительно не думаю, что это как-то существенно увеличит продажи, но технология действительно достойна того, чтобы быть упомянутой.
Суть в том, что основную часть алгоритма надо написать на языке C, собрать и записать в ключ. После этого необходимо организовать интерфейс обмена данными между внешним модулем и ключом и, в итоге, получится действительно черный ящик. Существуют определенные ограничения на размер данных и объем передачи, но, при определенных навыках, все это можно свести к минимальному набору, и обеспечить хорошее быстродействие. Не буду описывать технические нюансы, кому интересно, можете задать вопрос. У нас были клиенты, которые использовали ключи для защиты роботов.
Дополнительным плюсом является наличие встроенной системы лицензирования, которая позволяет устанавливать ограничения по количеству запусков или по времени, что позволяет организовать различные схемы продажи.
Так что там особо нечего защищать — к копирастам никогда не выстроится очередь.
Это из разряда «секреты миллионеров».
Бредовая затея, т.к. нужно понимать на что вы собираетесь ставить деньги! Так как это может оказаться просто перегонщиком денег со счета на счет.
Если есть желание и возможность, то раскройте, пожалуйста, тему более широко.
Можно брать здесь: http://getanyplatform.com