python中的安全凭证存储 袭击
在凭证存储环境中,一种可能的威胁模型是攻击者,该攻击者能够:python中的安全凭证存储 袭击,python,security,reflection,storage,credentials,Python,Security,Reflection,Storage,Credentials,在凭证存储环境中,一种可能的威胁模型是攻击者,该攻击者能够: 检查任何(用户)进程内存 读取本地(用户)文件 顺便说一句,关于这种类型的攻击的共识是不可能预防(因为凭证必须存储在内存中,程序才能实际使用它们),但有几种技术可以缓解这种攻击: 尽可能缩短敏感数据存储在内存中的时间 一旦不再需要数据,立即覆盖内存 损坏内存中的数据,不断移动数据,并通过隐藏措施确保其他安全性 尤其是Python 第一种技术很容易实现,可能(希望是内核空间存储) 就我所知,如果不写一个C模块,第二个是不可能实现
- 检查任何(用户)进程内存
- 读取本地(用户)文件
- 尽可能缩短敏感数据存储在内存中的时间
- 一旦不再需要数据,立即覆盖内存
- 损坏内存中的数据,不断移动数据,并通过隐藏措施确保其他安全性
考虑到所有这些,如何使用python安全地存储身份验证凭据?最佳实践是什么?对于“一切都是公共的”这一语言哲学,我们能做些什么吗?我知道,但我们应该被迫在与攻击者共享密码和使用其他语言之间做出选择吗?存储身份验证凭据的原因有两个截然不同的原因:
- 在需要之前对机密进行加密,按需解密,然后在需要后立即重新加密
- 使用地址空间随机化,因此每次应用程序运行时,密钥都存储在不同的地址
- 使用操作系统密钥库
- 使用C/C++等“硬”语言,而不是Java或Python等基于VM的内省语言
- 认证。例如,在我居住的地方,当我尝试登录我的网上银行时,我会在手机上收到一条短信(OTP)。在这个方法中,我通过拥有一个特定的电话号码来证明我是正确的
- :要登录到服务,我必须按下令牌上的按钮以获取OTP,然后将其用作密码
- 其他设备:
- ,特别是美国国防部使用的,称为。Python有一个被调用的模块来与此接口
- 装置
- 应用程序使用PKI方案或双因素身份验证登录到安全代理上
- 用户将第三方系统的安全凭据添加到安全代理。凭据从不存储在应用程序中
- 稍后,当应用程序需要访问第三方系统时,它会向代理发送请求。代理使用安全凭据登录并发出请求,并将结果返回给应用程序
- 用户可能不希望将安全代理信任给st