繁体   English   中英

通过管道使用openssl是安全的吗?

[英]Using openssl via pipe is secure?

我在外壳上使用openssl加密数据,并希望稍后在运行时使用ObjC / C / C ++程序解密数据。 由于无法使用openssl库使它正常工作,我从程序“在控制台上”调用openssl,然后使用popen()等将解密的结果通过管道传送回字符串中。这是完美的方法,但我想知道这种方法是否安全就像“内部”使用它一样。

感谢您的评论或提示,因为我还没有找到任何有用的信息...
马蒂亚斯

您可能会将自己暴露给更多的攻击媒介,除此之外,它的安全性不亚于链接和使用OpenSSL库。

您从popen运行的程序及其参数可能会通过argv公开其他信息,如果您可以直接在命令行上指定关键材料并这样做,则可以通过/ proc / <pid> / cmdline公开(以及ps / top / etc。)。 如果我要通过另一个进程解密并通过管道将其传递给另一个应用程序,这就是我最担心的问题。 作为root用户,如果您通过环境将密钥材料传递给应用程序,他们也将能够读取/ proc / <pid> / environ,尽管如果他们是root用户,那么他们也可以做各种各样的其他恶作剧以获取控制权。无论您使用哪种方法使用openssl(库/二进制+管道),都可以使用您的东西。

还有其他一些事情,例如用恶意软件替换openssl二进制文件,或者如果让popen / shell确定要使用哪个openssl二进制文件,则将其注入PATH的较早位置,尽管如果他们能做到这一点,他们还可以获得一个密钥-通过更简单的方法(或者它们可以替换或LD_PRELOAD一个恶意的openssl库,它也很巧妙地击败了与openssl的动态链接),从而获得了更好的材料和密文。 侦听管道也是如此,它们必须以root或您的用户身份运行。

简而言之,如果您可以通过argv公开而不暴露任何敏感信息,那么它的安全性不会比使用OpenSSL库低很多。 是的,还有其他几种方法可以保存您的东西,但是它要求它们以用户身份运行,无论如何它都可以保留您的东西(尽管可能需要更多的努力) 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM