Eugene777
Eugene777 личный блог
23 апреля 2014, 10:48

Технологии защиты интеллектуальной собственности при продаже роботов.

Поскольку за последние несколько дней тема продажи алгоритмов стала популярна, решил написать немного на тему защиты интеллектуальной собственности. 

Так уж получилось, что перед тем как заняться количественным анализом и алгоритмами я более десяти лет посвятил защите программного обеспечения от пиратства и до сих пор тесно связан с этим вопросом. 

Так вот, основной проблемой при продаже роботов является защита алгоритма от изучения, пожалуй, за исключением тех случаев, когда этот алгоритм полностью описан и отдается заказчику. В том случае, когда продается черный ящик, алгоритм должен быть надежно спрятан. Сказать это намного проще, чем сделать и тут все зависит от технологии реализации.


Вариантов может быть несколько и самый простой для защиты — это когда программа собирается в исполняемый машинный код (native code). Этот код можно изучать с помощью дизассемблеров, некоторые из них (IDA) позволяют привести его к виду C. Для защиты от изучения можно использовать так называемые конверты, которые выполняют две основные функции: обфускация (затемнение)  кода и вируализация. Этот код изучать значительно сложнее. Тут я могу смело порекомендовать VMProtect, с автором которого мы сотрудничаем долгое время. 



Вариант номер два: робот на .NET, скомпилированные скрипты Wealth-Lab, Ninja Trader. Думаю, это самый распространенный вариант. Тут возможно использование обфускатора кода и паковщика, но оба варианта ненадежны, так как код сборки легко достается перед выполнением а обфускатор снимается деобфускатором, а далее приводится к виду исходника с помощью многочисленных декомпиляторов.  Изучая вопрос, я находил специальный обфукатор для скриптов Ninja стоимостью US$1500, но в действии его не видел и вероятность, что это надежное приложение на фоне всех остальных, оцениваю как чрезвычайно низкую. 

Вариант три: скриптовые языки: Quick, eSignal, еще что-то. Не знаю, как квик, но eSignal, например, позволяет компилировать модули в защищенном варианте. Честно говоря, степень надежность оценить не могу. Скорее всего, все сведется к расшифровки кода после загрузки. 

Собственно, решение проблемы с вариантами два и три мне видится как создание модуля с нативным кодом, содержащего алгоритм, защита этого модуля и организации интерфейса из .NET или скрипта. 

Существует идеальный вариант защиты, исходя из критериев надежность/скорость работы/удобство пользователя. Это электронный ключ с технологией исполняемого кода. Существует несколько ключей различных производителей, я расскажу про SenseLock, который мы здесь продаем. Не сочтите за откровенную рекламу, я действительно не думаю, что это как-то существенно увеличит продажи, но технология действительно достойна того, чтобы быть упомянутой. 

Суть в том, что основную часть алгоритма надо написать на языке C, собрать и записать в ключ. После этого необходимо организовать интерфейс обмена данными между внешним модулем и ключом и, в итоге, получится действительно черный ящик. Существуют определенные ограничения на размер данных и объем передачи, но, при определенных навыках, все это можно свести к минимальному набору, и обеспечить хорошее быстродействие. Не буду описывать технические нюансы, кому интересно, можете задать вопрос. У нас были клиенты, которые использовали ключи для защиты роботов. 

Дополнительным плюсом является наличие встроенной системы лицензирования, которая позволяет устанавливать ограничения по количеству запусков или по времени, что позволяет организовать различные схемы продажи. 
17 Комментариев
  • Engi
    23 апреля 2014, 11:09
    Рабочие алгоритмы не продаются, впаривают то, что перестает приносить прибыль.
    Так что там особо нечего защищать — к копирастам никогда не выстроится очередь.
      • Engi
        23 апреля 2014, 11:37
        Eugene777, их нет смысла продавать, пока они рабочие.
        Это из разряда «секреты миллионеров».
  • Иван Митяев
    04 мая 2014, 14:49
    Можно также использовать клиент-серверную архитектуру, когда ядро выполняется на сервере. Как правило обмен данными можно свести к минимуму, защищая только критичные части алгоритма.
  • SMA
    04 мая 2014, 15:35
    смысла нет покупать черный ящик!!! Покупается технология или как вы ее называет интеллектуальная собственность, так как если что то перестает работать ты получаешь знание, а не какую то хрень, в виде черного ящика! И еще, как вы можете покупать черный ящик?
    Бредовая затея, т.к. нужно понимать на что вы собираетесь ставить деньги! Так как это может оказаться просто перегонщиком денег со счета на счет.
      • SMA
        06 мая 2014, 02:08
        Eugene777, есть, но очень редки, можно сказать не более 10% из всей массы. Игра в казино так сказать) всего лишь.так что вообще не вариант.
          • SMA
            07 мая 2014, 16:39
            Eugene777, согласен с вами полностью
  • Si#
    05 мая 2014, 10:27
    Очень интересная тема!
    Если есть желание и возможность, то раскройте, пожалуйста, тему более широко.
  • Виталий Шандуров
    18 сентября 2016, 15:41
    Проще взять триал понравишихся платформ и посмотреть подробнее.

    Можно брать здесь: http://getanyplatform.com

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн