安全地覆盖RAM中的Python变量?

时间:2013-10-03 13:54:28

标签: python security memory hashlib

我正在使用Python编写一个涉及哈希密码的程序。假设我使用它来获取密码:

import getpass
password = getpass.getpass("Password: ")

然后散列它,有没有办法安全地从RAM中删除所有未散列密码的痕迹?

1 个答案:

答案 0 :(得分:3)

如前所述,即使您有自定义实现,在python中也没有万无一失的方法(尽管这可能是一种方式)。

现在我不知道您的应用程序应该做什么,但我可以毫无疑问地告诉您,您的数据在RAM中比在数据库中更安全,即使在哈希之后也是如此。

记忆的运作方式非常复杂。每个进程都有自己的虚拟内存空间,不必是连续的。完整的内存块交换到磁盘并放回另一个内存块。整个内存只是一组字节,几乎不可能分辨整数数组,字符串,猫或简单的随机数据。

部分数据块被部分重新分配,从而创建了大量的部分数据。想象一下这是什么意思,1,2,8甚至16Gb的随机数据,潜在的黑客必须在所有0和1中找到密码。

如果有人想在执行过程中破解您的密码,他需要以root身份对该计算机进行实时访问;由于我之前所说的原因,他不能仅仅通过查看交换来做到这一点。

但是如果有人有这种访问权限,那么还有很多其他方法可以获取密码。例如,只需调试程序,或者更好,只需更改源并使其打印密码:)

大多数黑客都不会费心去做这样的麻烦。黑客主要是关于social engineering,这基本上是让用户自愿地给黑客提供密码。 Phishing就是这样一种方法。