Objective c 在Cocoa应用程序中加密资源?

Objective c 在Cocoa应用程序中加密资源?,objective-c,cocoa,encryption,shell,Objective C,Cocoa,Encryption,Shell,我的Cocoa应用程序的resources文件夹中存储了一个shell脚本。如果使用不当,它可能会很危险(尽管我已经采取了预防措施来减少漏洞利用,例如使用命令的绝对路径),那么有没有办法以二进制格式对脚本进行加密,然后在需要使用时对其进行解密 谢谢否。如果用户将其解密以使用它,那么她可以在某个时候看到(并截获)明文。如果您认为您有“类似shell”的事情要做,请在C/ObjC中完成它们。。。可以是您的朋友。否。如果用户将其解密以使用它,则她可以在某个点查看(并截取)明文。如果您认为您有“类似sh

我的Cocoa应用程序的resources文件夹中存储了一个shell脚本。如果使用不当,它可能会很危险(尽管我已经采取了预防措施来减少漏洞利用,例如使用命令的绝对路径),那么有没有办法以二进制格式对脚本进行加密,然后在需要使用时对其进行解密


谢谢

否。如果用户将其解密以使用它,那么她可以在某个时候看到(并截获)明文。如果您认为您有“类似shell”的事情要做,请在C/ObjC中完成它们。。。可以是您的朋友。

否。如果用户将其解密以使用它,则她可以在某个点查看(并截取)明文。如果您认为您有“类似shell”的事情要做,请在C/ObjC中完成它们。。。可以成为你的朋友。

你要求的基本上是数字版权管理。不同的目的(“安全”而不是阻止版权侵权),但同样的方法,同样的问题

为了让用户能够正常使用(音乐|视频|脚本),他们必须能够对其进行解密。你只能在你(播放器|应用程序)中的适当条件下为他们这样做,但这并不重要:无论你隐藏得多么好,你仍然必须向用户提供解密(音乐|视频|脚本)所需的所有技术和密钥,以便你的(播放器|应用程序)能够做到这一点

然后,由于用户拥有解密所需的所有技术和密钥,攻击者可以并最终将其全部解密,并自行解密(音乐视频脚本)


我同意马萨的建议,不再使用shell脚本。这并不能完全消除风险:如果攻击者能够获得对shell脚本的写入权限,那么他们也可以同样轻松地获得对Mach-O可执行文件的写入权限。但是编辑Mach-O可执行文件并不是那么容易,所以你至少可以这样提高标准。

你要求的基本上是DRM。不同的目的(“安全”而不是阻止版权侵权),但同样的方法,同样的问题

为了让用户能够正常使用(音乐|视频|脚本),他们必须能够对其进行解密。你只能在你(播放器|应用程序)中的适当条件下为他们这样做,但这并不重要:无论你隐藏得多么好,你仍然必须向用户提供解密(音乐|视频|脚本)所需的所有技术和密钥,以便你的(播放器|应用程序)能够做到这一点

然后,由于用户拥有解密所需的所有技术和密钥,攻击者可以并最终将其全部解密,并自行解密(音乐视频脚本)


我同意马萨的建议,不再使用shell脚本。这并不能完全消除风险:如果攻击者能够获得对shell脚本的写入权限,那么他们也可以同样轻松地获得对Mach-O可执行文件的写入权限。但是编辑Mach-O可执行文件并不是那么容易,所以至少你这样做了。

似乎你关心的是人们获得对脚本的写访问权,并修改它以运行任意代码。您可以在二进制文件中保留脚本的校验和,并在运行脚本之前将其与脚本的校验和进行比较。现在,你如何阻止人们编辑二进制文件呢?代码签名。事实上,如果您将shell脚本保留在应用程序包中,那么编辑该脚本将破坏该包的签名。

似乎您担心的是人们获得对脚本的写访问权,并将其修改为运行任意代码。您可以在二进制文件中保留脚本的校验和,并在运行脚本之前将其与脚本的校验和进行比较。现在,你如何阻止人们编辑二进制文件呢?代码签名。事实上,如果您将shell脚本保留在应用程序包中,那么编辑脚本将破坏包的签名。

这没有多大意义。如果攻击者有权编辑此脚本文件,那么他们可能有权编辑任意数量的文件,那么您的应用程序的安全风险比攻击者可以做的任何其他事情都要小。

这没有多大意义。如果攻击者有权编辑此脚本文件,那么他们可能有权编辑任意数量的文件,那么您的应用程序的安全风险比攻击者可以做的任何其他事情都要小。

我认为PCWiz考虑的是攻击向量,如“阅读此shell脚本并更改(例如)awk以获得易受攻击的awk版本,有人可以让我的程序执行来自Internet的随机代码,而无需先询问用户。”是的,Massa是正确的。为了使其更安全,我使用了命令的绝对路径(因此无法利用PATH变量运行不需要的代码),但如果攻击者获得对脚本的写访问权限,他们可以轻松修改它。我将在Massa的链接中尝试编译器。我的另一个想法是将脚本作为NSString存储在ObjC应用程序中,然后将脚本写入临时位置,执行它,然后在进程结束时删除它。这样行吗?谢谢,请参阅ms可能是ccsh编译器的一个问题,当我尝试联机运行它时,我发现:在该服务器上找不到请求的URL/pcgi bin/ccsh.cgi。关于在某处将字符串组装为脚本:您将以用户身份运行,因此,用户可以看到脚本在“/tmp”或其他位置弹出,以便她可以读取并(可能)读取它尝试一个漏洞。关于ccsh.cgi不起作用:好吧,它在几年前(TM)对我起作用了,对不起…你必须自己翻译显然…我认为PCWiz正在考虑攻击向量,如“阅读此shell脚本并更改(例如)awk以获得易受攻击的awk版本,有人可以让我的程序执行来自Internet的随机代码,而无需先询问用户等等。“是的,Massa是正确的。为了使它更安全