gpt4 book ai didi

python - 防止 RAM 中的纯文本密码 (Python)

转载 作者:行者123 更新时间:2023-11-28 21:27:00 25 4
gpt4 key购买 nike

我实际上编写了一个 Python 模块来访问 KeePass/KeePassX 数据库。我的问题是数据库的密码以纯文本形式保存在我的数据库对象中:

def __init__(self, filepath=None, masterkey=None, read_only=False,
new = False):
""" Initialize a new or an existing database.

If a 'filepath' and a 'masterkey' is passed 'load' will try to open
a database. If 'True' is passed to 'read_only' the database will open
read-only. It's also possible to create a new one, just pass 'True' to
new. This will be ignored if a filepath and a masterkey is given this
will be ignored.

"""

self.groups = []
self.read_only = read_only
self.filepath = filepath
self.masterkey = masterkey # I mean this

我不知道如何避免这种情况。我唯一的想法是存储使用随机生成的 key 加密的密码(就像 KeePassX 所做的那样),但是 Python 不允许私有(private)成员是否存在问题?我的意思是可以从正在运行的程序外部访问随机生成的 key 吗?或者是从 RAM 中转储程序内存的唯一可能性?如果后者的答案是"is",那么应该是提高安全性还是我被误导了?

无论哪种方式,是否存在 Python 将字符串“抛出”到整个 RAM 以使密码始终有可能以纯文本形式存储的问题?

我知道有很多问题,但这是该项目中最关键的安全点之一。

最佳答案

如果您的操作系统具有进程内存保护(所有现代操作系统都具有此功能),那么在同一进程中运行的任何代码都可以访问密码。除非您授予以操作系统特定方式对内存页面的特定访问权限,否则其他进程将无法访问数据:这是 RPG 完成的一种方法。内核可以访问您的内存,从而访问密码,但是如果攻击向量通过该路径,您将遇到一些严重的问题。

如果您的操作系统具有虚拟内存,则包含密码的页面可能会写入 root 用户可以访问的文件。因此,在 root 中运行的进程可以从那里读取密码。但是,如果您有一个以 root 身份运行的恶意进程,您需要担心的问题会更严重。

对象中的私有(private)成员是一种语言级别的保护,仅在编译或解释代码时强制执行。它对数据的RAM访问没有影响。

总之,密码在运行过程中是安全的。您只需要关心密码是否已保存到您控制的文件中或以某种方式写入您控制的流中。

关于python - 防止 RAM 中的纯文本密码 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11809673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com