保护/加密分发的R包代码

保护/加密分发的R包代码,r,obfuscation,R,Obfuscation,我正在用R编写一个包,希望对代码进行保护/加密。基本上,当查看我的包代码时,它应该是加密的,不可读的。我读到有人对他的代码(1)进行了加密,但是我没有找到更多关于这方面的信息。我知道我可以用C/C++编写代码并进行编译,但是我想让它进入R并在那里“保护”它 我的问题是:这可能吗?这怎么可能 谢谢你的回答 参考资料: (1) 您是否尝试过遵循该思路 在某些情况下,R代码必须由R解释器处理。如果你给某人加密的代码,你必须给他们解密密钥,这样R才能运行它。也许你可以把钥匙藏在某个地方,希望他们找不到

我正在用R编写一个包,希望对代码进行保护/加密。基本上,当查看我的包代码时,它应该是加密的,不可读的。我读到有人对他的代码(1)进行了加密,但是我没有找到更多关于这方面的信息。我知道我可以用C/C++编写代码并进行编译,但是我想让它进入R并在那里“保护”它

我的问题是:这可能吗?这怎么可能

谢谢你的回答

参考资料:


(1)

您是否尝试过遵循该思路

在某些情况下,R代码必须由R解释器处理。如果你给某人加密的代码,你必须给他们解密密钥,这样R才能运行它。也许你可以把钥匙藏在某个地方,希望他们找不到。但是他们必须能够访问它,才能以某种方式生成纯文本R代码

这适用于您在计算机上运行或查看的所有程序或文件。加密的PDF文件?不,它们只是混淆了,一旦找到解密密钥,就可以对它们进行解密。即使是以C或C++编写的二进制代码,也可以用足够的时间、工具和足够聪明的黑客进行逆向工程。
您希望它受到保护,将其保留在服务器上,并且只允许通过网络API进行访问。

您是否尝试遵循该线程

在某些情况下,R代码必须由R解释器处理。如果你给某人加密的代码,你必须给他们解密密钥,这样R才能运行它。也许你可以把钥匙藏在某个地方,希望他们找不到。但是他们必须能够访问它,才能以某种方式生成纯文本R代码

这适用于您在计算机上运行或查看的所有程序或文件。加密的PDF文件?不,它们只是混淆了,一旦找到解密密钥,就可以对它们进行解密。即使是以C或C++编写的二进制代码,也可以用足够的时间、工具和足够聪明的黑客进行逆向工程。
您希望它受到保护,将其保存在服务器上,并且只允许通过网络API进行访问。

我最近不得不做类似的事情,这并不容易。但我还是成功了。可以混淆和/或加密脚本。问题是,你有时间投入吗?您需要确保您使用的任何“模糊/加密”方法都很难破解,而且非常耗时,并且不会减慢脚本的执行时间

如果希望快速加密Rscript代码,可以使用

我使用前面提到的站点测试了以下rcode,它产生了一个非常吓人的输出,不知怎么的,它起了作用:

#!/usr/bin/env Rscript
for (i in 1:100){
    if (i%%3==0) if (i%%5==0) print("fizzbuzz") else print("fizz") else
    if (i%%5==0) print("buzz") else
    print(i)
}
如果您确实有时间,并且希望自己使用自己的临时方法对脚本进行加密,那么您需要使用openssl命令。为什么?因为它似乎是在大多数Unix系统(如果不是所有Unix系统的话)中可用的唯一加密工具。我已经验证了它存在于Linux(ubuntu、centos、redhat、mac)和AIX上

使用Openssl加密文件或脚本的最简单方法是:

1. cat <your-script> | openssl aes-128-cbc -a -salt -k "specify-a-password" > yourscript.enc

OR

2. openssl aes-128-cbc -a -salt -in <path-to-your-script> -k "yourpassword"
1。cat | openssl aes-128-cbc-a-salt-k“指定密码”>yourscript.enc
或
2.openssl aes-128-cbc-a-salt-in-k“您的密码”
要使用Openssl解密脚本(请注意'-d'):

1。cat yourscript.enc | openssl aes-128-cbc-a-d-salt-k“指定密码”>yourscript.dec
或
2.openssl aes-128-cbc-a-d-salt-in-k“yourpassword”>yourscript.dec

这里的技巧是自动提供密码,这样用户就不必在每次运行脚本时都指定密码。或者这就是你想要的?

我最近不得不做类似的事情,这并不容易。但我还是成功了。可以混淆和/或加密脚本。问题是,你有时间投入吗?您需要确保您使用的任何“模糊/加密”方法都很难破解,而且非常耗时,并且不会减慢脚本的执行时间

如果希望快速加密Rscript代码,可以使用

我使用前面提到的站点测试了以下rcode,它产生了一个非常吓人的输出,不知怎么的,它起了作用:

#!/usr/bin/env Rscript
for (i in 1:100){
    if (i%%3==0) if (i%%5==0) print("fizzbuzz") else print("fizz") else
    if (i%%5==0) print("buzz") else
    print(i)
}
如果您确实有时间,并且希望自己使用自己的临时方法对脚本进行加密,那么您需要使用openssl命令。为什么?因为它似乎是在大多数Unix系统(如果不是所有Unix系统的话)中可用的唯一加密工具。我已经验证了它存在于Linux(ubuntu、centos、redhat、mac)和AIX上

使用Openssl加密文件或脚本的最简单方法是:

1. cat <your-script> | openssl aes-128-cbc -a -salt -k "specify-a-password" > yourscript.enc

OR

2. openssl aes-128-cbc -a -salt -in <path-to-your-script> -k "yourpassword"
1。cat | openssl aes-128-cbc-a-salt-k“指定密码”>yourscript.enc
或
2.openssl aes-128-cbc-a-salt-in-k“您的密码”
要使用Openssl解密脚本(请注意'-d'):

1。cat yourscript.enc | openssl aes-128-cbc-a-d-salt-k“指定密码”>yourscript.dec
或
2.openssl aes-128-cbc-a-d-salt-in-k“yourpassword”>yourscript.dec

这里的技巧是自动提供密码,这样用户就不必在每次运行脚本时都指定密码。或者这就是你想要的?

谢谢你的回答!你知道可能有什么PoC实现吗?我真的很感激你的回答!我所说的PoC是指概念证明不,我只有概念。编写一个包含加密的zip代码文件的包,然后当包加载时,它解密zip(密码在.First.lib中)并加载其中的代码。你能看到漏洞吗?是的,但是,你的主要假设是
攻击者拥有无限的资源。这引起的问题可能是每个安全系统的问题,没有什么是真正安全的!T