2

我想将用户名和密码信息从一个进程传输到 Windows 中同一服务器上运行的另一个进程。以安全方式实现此传输的最佳方法是什么?一种简单的方法是将密码复制到文件中,然后让其他进程从文件中读取,然后在读取文件后将其删除。虽然这很简单,但我担心它是否安全,因为即使它只存在很短的时间,某人仍然有可能访问该文件并且如果另一个文件也有可能被遗漏处理错误或崩溃。像套接字和命名管道这样的 IPC 似乎是解决这个问题的过度杀伤力。我更倾向于使用内存映射文件,如下面的链接中所述,该链接讨论了跨进程共享内存。这是正确的方法吗?此外,在释放/擦除之前用虚拟数据填充内存以防止 rouge 进程从该内存位置清除数据是一个好主意吗?

http://msdn.microsoft.com/en-us/library/aa366551(VS.85).aspx

4

2 回答 2

4

RPC 在这里是你的朋友(我不会使用命名管道来传输安全数据,因为它们有一些严重的问题(因为它们在全局命名空间中运行,因此容易受到抢注攻击))。

由于数据没有通过网络传输,因此加密并不像某些人所描述的那么重要。相反,让一个进程实现一个 RPC 服务器并让另一端绑定到该服务器,发出带有凭据的 RPC 调用并销毁绑定句柄 - 这应该会破坏中间数据结构。

使用完后不要忘记将内存安全地清零(否则它可能会持久化到磁盘上)。

如果您确实想使用加密,请使用 CryptProtectMemory,它将以可用于 IPC 的方式加密数据。

于 2009-06-12T05:25:22.073 回答
1

使用一些 IPC,(1) 不支持到磁盘,(2) 支持 ACL。

这似乎表明命名管道。

或者,DCOM 和 WCF 都支持内容加密。

于 2009-06-11T20:10:25.450 回答