Windows マシンで実行している一連の R スクリプトがあり、コードを表示するつもりのない人がコードを読み取れないようにしたいと考えています。Linux ボックスでは、R コードを bash スクリプト #! でラップできます。暗号化された (そしておそらく寿命が限られている) 実行可能なシェル スクリプトを作成します。Windowsで同様の行で何かを行うためのオプションは何ですか?
3 に答える
私の答えは少し遅れていますが、これは良い質問だと思います。残念ながら、現時点で解決策、または少なくとも簡単な解決策があるとは思えません。
R を含むほとんどのインタープリター言語では、実行中のすべてのコマンドのログ記録と検査をオンにすることが可能な場合が多いため、この問題は一般的です。これにより、コードを難読化するための多くのトリックが無効になる可能性があります。
コードがオープンである==良いと考えることを好む人は、コードを難読化する一般的な理由は、複数のベンダーを雇っているクライアントと相談している場合であることを知っておく必要があります。クライアントがベンダー A からスクリプトを取得し、ベンダー B にそのシステムで動作しない理由を尋ねることは珍しくありません。(これは、NDA 契約の責任者ではなく、低レベルの IT フランキーによって行われる可能性があります。) A と B が競合している場合、A のコードは B に渡されたばかりです。スクリプト == 真面目なプログラムの場合、真面目なコードは譲られました。
これに対処する方法は次のとおりです。
- コンパイルされた言語を呼び出し、そこで利用可能な標準の保護を使用します。
- 別のサーバーで実行可能ファイルをホストし、サーバーへの呼び出しを使用して計算を実行します。(R には、複数のサーバー側オプションがあります。)
- 言語内でコンパイル済み (前処理済み / バイトコード) コードを使用します。
オプション 2 は、IP の理由だけでなく、コードが広く配布されている可能性がある場合は、実際にはより簡単で優れています。主な利点は、サイト全体のリリース プロセスの手間をかけずにコードをアップグレードできることです。新しいライブラリが必要な場合は、サーバーを更新してください。
.p
オプション 3 はファイルを使用して Matlab で実行されpy2exe
、Windows 上の Python で実行できます。R では、新しいバイトコード コンパイルは.Rc
類似している可能性がありますが、R コンテキストの.p
ファイルと Matlab コンテキストのファイルの違いに対処するのに十分なほど詳しくはありません。コンパイラの詳細については、http: //www.inside-r.org/r-doc/compiler/compileを参照してください。
サーバー上で計算をホストすることは、バグや機能の要求に応じて迅速に反復することが容易になるため、知識のないユーザーとの作業に最適です。IP 保護は単なる利点です。
これは特に R 指向の戦略ではありません。(そして、とにかく、制約や目標が実際に何であるかは少し不明です。)クロスプラットフォームの暗号化方法が必要な場合は、オープンソース プログラム TrueCrypt を調べる必要があります。ボリュームのフォーマット方法をサポートする任意のマシンにボリュームとしてマウントできる暗号化ファイルの作成をサポートします。Mac は FAT ファイルを読み取ることができるため、私はこれを Mac PC 分割全体でテストしましたが、Linux-PC キャズム全体でどのように機能するかについては経験がありません。
(Windows 用の TODO リストには、「ボリューム作成のコマンド ライン オプション (Linux および Mac OS X バージョンでは既に実装されています)」が含まれています。 OS.)
Rインタープリターはコードを実行するためにコードを解読して読み取ることができる必要があるため、これは可能ではないと思います。つまり、そのインタープリターを使用している人は誰でもコードを解読して読み取ることができます。
私は決して専門家ではないので、その声明について 100% 間違っている権利を留保します。
最善の解決策は、機密を保持することではなく、会社とその雇用主が提供する専門知識とサービスから価値が得られるようにすることだと思います。
それができない場合は、コードをクライアント/サーバー モデルに分離してみてください。そうすれば、クライアントはデータを送信して結果を受け取るだけで、サーバー上で実行されるコードにアクセスすることはありません。
しかし、私の中の科学者は、「その解決策はひどいものであり、そのような条件下で提供される結果は決して信用できない」と言った.