Сценарий шифрования R под MS-Windows - PullRequest
16 голосов
/ 16 января 2011

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

Ответы [ 3 ]

20 голосов
/ 04 августа 2011

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

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

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

Способы, которые я видел, обращались к этому:

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

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

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

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

5 голосов
/ 16 января 2011

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

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

1 голос
/ 16 января 2011

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

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

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

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

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

...