Chiffrement du script R sous MS-Windows
J'ai un tas de R scripts qui je suis en cours d'exécution sur une machine Windows et vous voulez vous assurer que le code reste non lu par ceux qui ne sont pas destinés à le voir. Sur une machine Linux, j'ai pu envelopper le R ce code dans un script bash #! et de faire un chiffrés (et peut-être même une durée de vie est limitée) exécutable d'un script shell. Quelles sont mes options pour faire quelque chose de similaire sous Windows?
source d'informationauteur Vishal Belsare
Vous devez vous connecter pour publier un commentaire.
Ma réponse est un peu tardive, mais je crois que c'est une bonne question. Malheureusement, je ne crois pas qu'il existe une solution, ou au moins facile, à l'heure actuelle.
La difficulté est commune parce que, pour la plupart des langages interprétés, y compris la recherche, il est souvent possible d'activer l'enregistrement et l'inspection de toutes les commandes en cours d'exécution. Cela peut aller à l'encontre de nombreuses astuces pour obfusquer le code.
Pour ceux qui préfèrent penser à code ouvert == bon, il faut savoir qu'une raison commune pour obfusquer le code est si l'on est en consultation avec un client qui fait appel à plusieurs fournisseurs. Il n'est pas rare pour un client à prendre des scripts à partir d'Un fournisseur et demandez vendeur B pourquoi il ne fonctionne pas avec leur système. (Cela peut être fait par un faible niveau, IL flunkie, plutôt que quelqu'un de responsable pour la LDN contrats.) Si A & B sont des concurrents, Un code a été remis à B. Lorsque les scripts == programmes sérieux, sérieusement code a été donné.
Les solutions que j'ai vu cette abordés sont les suivants:
L'Option 2 est effectivement plus facile et de meilleure qualité lorsque le code peut être largement diffusé, non seulement pour les IP raisons. Un avantage majeur est qu'il permet de mettre à niveau le code sans avoir à passer par la douleur d'un site à l'échelle de processus de libération. Si de nouvelles bibliothèques sont nécessaires, pas de problème de mise à jour du serveur.
L'Option 3 est fait dans Matlab avec
.p
fichiers, et peut être fait avecpy2exe
pour Python sur Windows. Dans R, la nouvelle compilation du bytecode peut être analogues, mais je ne suis pas assez familier avec elle à l'adresse de toutes les différences entre.Rc
fichiers dans le R le contexte et.p
fichiers dans le Matlab contexte. Pour plus d'informations sur le compilateur, voir: http://www.inside-r.org/r-doc/compiler/compileHébergement des calculs sur le serveur est idéal pour le travail avec de simples utilisateurs, car il est plus facile pour itérer rapidement en réponse à des bugs ou des demandes de fonctionnalités. La protection de la propriété intellectuelle est tout simplement un avantage.
Ce n'est pas spécifiquement un R-orienté stratégie. (Et c'est un peu difficile ce vos contraintes ou objectifs sont vraiment de toute façon.) Si vous voulez une croix-plate-forme de méthode de cryptage, vous devriez regarder dans le programme open source TrueCrypt. Il prend en charge la création des fichiers cryptés qui peuvent être montés comme des volumes sur n'importe quelle machine qui prend en charge le volume de la méthode de formatage. J'ai testé ce à travers le Mac PC diviser , depuis le Mac peut lire la GRAISSE des fichiers, mais n'ont aucune expérience de la façon dont il pourrait fonctionner à l'échelle du PC-Linux gouffre.
(Leur liste de choses à faire pour Windows comprend;"options de ligne de Commande pour la création d'un volume (déjà implémenté sous Linux et Mac OS X versions)". Donc je ne vois pas de façon claire à utiliser à partir de R sans vous exécutez le programme à partir de l'OS.)
Je ne pense pas que ce soit possible, car les R interprète doit être capable de déchiffrer et lire le code afin de l'exécuter ce qui signifie que celui qui l'utilise qui interprète également être en mesure de les déchiffrer et lire le code.
Je suis pas un expert, donc je me réserve le droit d'être 100% tort à propos de cette déclaration.
Je crois que la meilleure solution est de s'assurer de la valeur de l'expertise et des services fournis par votre entreprise et les employeurs---pas de garder des secrets.
À défaut, vous pouvez essayer de séparer le code dans un modèle client/serveur. De cette façon, le client envoie des données et reçoit les résultats---ils n'ont jamais accès au code qui s'exécute sur le serveur.
Cependant, le scientifique en moi juste dit "est la solution qui suce et je n'aurais jamais confiance les résultats fournis dans de telles conditions".