Python,从内存中删除密码

3
我正在Python 2.7中将一些用户raw_input存储为变量,问题是这是敏感信息,因为它是加密加密货币钱包的口令。 因此,我希望确保一旦Python脚本完成,系统中就不会留下任何密码痕迹。
其中passphrase是变量,在程序结束时:
del passphrase

完全删除所有痕迹的操作是可行的吗?


1
如果你想要按照自己的方式管理内存,你可能应该转向C语言。例如,你可以为你的Python代码编写一个C扩展。 - ForceBru
由于您无法就地修改字符串,因此无法确保它已从内存中删除。 - Jean-François Fabre
2
你随后可以强制进行垃圾回收(gc.collect()),然后创建许多小对象来增加覆盖的机会。不过,Python似乎不适合这种操作。 - MacHala
顺便提一下,如果这是敏感信息,请勿显示文本。使用 getpasspw = getpass.getpass("password") - Jean-François Fabre
谢谢有用的提示,这只是一个业余项目,所以安全性并不是非常关键,我只是想知道而已。 - Scalextrix
1个回答

3

不建议使用del xxx或隐式删除(离开当前作用域)来隐藏以前存储的值,这可能关键取决于您的操作系统和Python实现。

但是,我建议除非您确实知道自己在做什么,否则不要自己编写安全系统,而是寻找已经存在的解决方案并使用它。例如,我不确定raw_inputinput是否适用于加密需求。

您可以在信息安全StackExchange上获取其他帮助。


显然我真的不知道我在做什么!感谢您的回复,这只是一个业余项目,所以安全性在目前阶段并不重要,只是想获取更多的知识。更明确地说,我正在使用口令短语插入到subprocess.call中,以允许目标程序执行操作,我实际上并没有对其进行任何加密转换。 - Scalextrix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接