簡體   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