崩溃转储上的明文密码保护[关闭]
Posted
技术标签:
【中文标题】崩溃转储上的明文密码保护[关闭]【英文标题】:Plaintext password protection on crash dump [closed] 【发布时间】:2014-10-15 06:19:31 【问题描述】:我们需要使用 LogonUser
、NetUseAdd
等 API 指定纯文本密码。我们可以通过在内存中加密来保护密码,并在调用函数之前分配一个明文密码(在LogonUser
的情况下输入lpszPassword
参数,或者在NetUseAdd
的情况下输入USE_INFO_2::ui2_username
)。
我的问题是如何保护明文密码免受外部进程的影响,尤其是当该进程可能崩溃并产生内存转储时。
应该是这样的:
-
保护这个内存区域
调用需要明文的安全函数
密码
解除内存区域保护
清理内存区域
【问题讨论】:
【参考方案1】:您需要保护内存转储本身。这就是为什么有些系统将它们完全禁用,有些系统将它们写入一个普通人无法读取的特殊位置,等等。
【讨论】:
可能无法保护内存转储,尤其是在客户端计算机上。有什么特别的地方,怎么让它不可读?我看到有关如何“攻击”的参考资料,但没有看到如何“保护”它的参考资料。 您不担心恶意用户可以拦截 LogonUser() 并且您会将凭据直接传递给他们吗?我假设您是在谈论在不受信任的客户端计算机上运行您的软件? 这就是我所关心的。如果不是正在运行的进程,但可能会以某种方式获取转储。就像 SSP(Kerberos 等)一样,它适用于密钥,为什么这些 API 不采用加密缓冲区,而不是普通密码? 如果即使在受保护的环境中,启动了一些管理员级别的进程怎么办?该过程可能会拦截 - 必须有技术来避免它(如果不是完全)。 我知道 Kerberos 是如何工作的,Windows 有 NTLM 等,但我不知道这如何适用于您的具体情况。从更高级别开始,稍微备份一下,然后发布一个新问题(请在此处链接),询问如何实现更高级别的安全身份验证目标,这可能是一个合理的想法。以上是关于崩溃转储上的明文密码保护[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Android 系统开发常用的目录(崩溃日志/wifi密码等)