6

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

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

然后对其进行哈希处理,有什么方法可以安全地从 RAM 中删除所有未哈希密码的痕迹?

4

1 回答 1

4

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

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

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

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

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

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

大多数黑客不会费心经历这样的麻烦。黑客攻击主要是关于社会工程,这基本上是让用户自愿给黑客密码。网络钓鱼就是这样一种方法。

于 2013-10-03T14:29:59.473 回答