我正在Python中製作一個包含散列密碼的程序。假設我用這個來獲得密碼:在RAM中安全地覆蓋Python變量?
import getpass
password = getpass.getpass("Password: ")
然後散列它,有沒有什麼辦法能夠安全地移除RAM的非散列密碼的所有痕跡?
我正在Python中製作一個包含散列密碼的程序。假設我用這個來獲得密碼:在RAM中安全地覆蓋Python變量?
import getpass
password = getpass.getpass("Password: ")
然後散列它,有沒有什麼辦法能夠安全地移除RAM的非散列密碼的所有痕跡?
如前所述,即使您有自定義實現(儘管這可能是一種方式),但在Python中執行此操作並不是萬無一失的。
現在我不知道你的應用程序應該做什麼,但我可以毫無疑問地告訴你,即使在散列之後,你的數據在RAM中的安全性也高於數據庫中的安全性。
內存的工作方式非常複雜。每個進程都有自己的虛擬內存空間,而不必是連續的。全部內存塊被交換到磁盤並放回到另一個內存塊中。整個內存只是一組字節,幾乎不可能區分整數數組,字符串,貓或簡單的隨機數據。
某些數據塊被部分重新分配以創建大量的部分數據。想象一下這是什麼意思,1,2,8甚至16Gb的隨機數據,潛在的黑客必須在所有這些0和1中找到密碼。
如果有人想在執行過程中破解密碼,他需要以root身份對機器進行實時訪問;他之所以不能這樣做,是因爲我之前提到的原因。
但是,如果有人擁有這種訪問權限,那麼有很多其他方式來獲取密碼。例如,簡單地調試程序,或者更好的,只需更改源代碼並使其輸出密碼即可:)
大多數黑客都不會打擾通過這樣的麻煩。黑客攻擊主要是關於social engineering,這基本上是讓用戶樂意給予黑客密碼。 Phishing就是這樣一種方法。
我認爲這篇文章可以幫助你: [http://stackoverflow.com/questions/1316767/how-can-i-explicitly-free-memory-in-python][1] [1]:http://stackoverflow.com/questions/1316767/how-can-i-explicitly-free-memory-in-python –
你爲什麼想要這樣做?爲了能夠讀取(確實很難)記憶,黑客無論如何都應該獲得root權限。請將您的精力集中在更明智/常見的[攻擊媒介](https://www.owasp.org)上,而不是產生這種虛假的安全感。 – RickyA
@RickyA你不知道tkbx正在嘗試做什麼,這實際上是一個很好的問題。 – Joe