Подтвердить что ты не робот

Шифрование R script в MS-Windows

У меня есть куча R-скриптов, которые я запускаю на машине Windows, и хочу убедиться, что код остается непрочитанным теми, кто не собирается его видеть. В ящике Linux я мог бы обернуть код R в bash script #! и сделать зашифрованную (и, возможно, даже ограниченную жизнь) исполняемую оболочку script. Каковы мои возможности сделать что-то подобное в Windows?

4b9b3361

Ответ 1

Мой ответ немного запоздал, но я считаю, что это хороший вопрос. К сожалению, я не считаю, что в настоящее время есть решение или, по крайней мере, легкое.

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

Для тех, кто предпочитает думать о том, что код открыт == хорошо, нужно знать, что общая причина для обфускации кода - это если вы консультируетесь с клиентом, который нанимает несколько поставщиков. Клиенту нередко приходится брать сценарии от поставщика A и спрашивать поставщика B, почему он не работает с их системой. (Это может быть сделано низкоуровневым IT-flunkie, а не кем-то, ответственным за контракты NDA.) Если A и B являются конкурентами, код только что передан B. Когда скрипты == серьезные программы, тогда серьезный код были отданы.

Способы, которые я видел, это:

  • Сделайте вызов скомпилированного языка и используйте доступные там стандартные защиты.
  • Укомплектовать исполняемый файл на другом сервере и использовать вызовы на сервере для выполнения вычислений. (В R есть несколько вариантов на стороне сервера.)
  • Использовать скомпилированный (предварительно обработанный/байт-код) код внутри языка.

Вариант 2 на самом деле проще и лучше, когда код может широко распространяться не только по причинам IP. Важным преимуществом является то, что он позволяет вам обновлять код, не испытывая боли в процессе выпуска на сайте. Если нужны новые библиотеки, не проблема - обновите сервер.

Вариант 3 выполняется в Matlab с .p файлами и может выполняться с помощью py2exe для Python в Windows. В R новая компиляция байткода может быть аналогичной, но я недостаточно разбираюсь в ней для решения любых различий между .Rc файлами в контексте R и .p в контексте Matlab. Дополнительную информацию о компиляторе см. В разделе http://www.inside-r.org/r-doc/compiler/compile

Хостинг вычислений на сервере отлично подходит для работы с неискушенными пользователями, потому что быстрее итерации быстро реагировать на ошибки или запросы функций. Защита IP - это просто преимущество.

Ответ 2

Это не специфическая R-ориентированная стратегия. (И немного непонятно, каковы ваши ограничения или цели на самом деле.) Если вам нужен кросс-платформенный метод шифрования, вы должны изучить программу TrueCrypt с открытым исходным кодом. Он поддерживает создание зашифрованных файлов, которые могут быть смонтированы в виде томов на любом компьютере, поддерживающем метод форматирования тома. Я тестировал это на Mac Mac, так как Mac может читать файлы FAT, но не имеет опыта работы с ним в беде Linux-PC.

(их список TODO для Windows включает в себя: "Параметры командной строки для создания тома (уже реализованы в версиях Linux и Mac OS X)". Поэтому я не вижу ясного способа использовать это изнутри R, программы из ОС.)

Ответ 3

Я не думаю, что это возможно, потому что интерпретатор R должен иметь возможность расшифровывать и читать код для его выполнения, что означает, что тот, кто использует этот интерпретатор, также сможет расшифровать и прочитать код.

Я никоим образом не эксперт, поэтому я оставляю за собой право на 100% ошибаться в этом заявлении.

Я считаю, что лучшим решением является обеспечение того, чтобы ценность исходила из опыта и услуг, предоставляемых вашей компанией, а работодатели - не от секретов.

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

Однако ученый во мне просто сказал: "Это решение отстойно, и я бы никогда не доверял результатам, предоставленным в таких условиях".