繁体   English   中英

Windows OpenSSH ssh-agent 服务在哪里偷偷存放私钥

[英]Where does Windows OpenSSH ssh-agent service secretly store private keys

获得了包含 ssh-agent 功能的 Windows10 Pro 附加功能“OpenSSH-Client”。 可以使用 ssh-add 将密钥添加到代理。 令我惊讶的是,这个 Windows 实现似乎将这些私钥存储在磁盘上 - 标准 ssh-agent 只会将它们存储在 RAM 中。 试试这个:

ssh-add <private key from thumbdrive>
## remove thumbdrive
## stop ssh-agent service
## start ssh-agent service
ssh-add -l

而且,你瞧,钥匙还在; 即使重新启动也不会擦除它们!

所以现在我非常非常安全的私钥在系统磁盘的某个地方。 如何擦除它们以及可能仍在磁盘上的任何遗物? 有谁知道这些保存的位置?

顺便提一句。 就个人而言,我发现这是对原始 OpenSSH ssh-agent 的不良功能扩展

好的,回答我自己的问题:

Short awnser: ssh-add -D将删除密钥.... 有点。

密钥存储在 HKCU\Software\OpenSSH\Agent\Keys 下的注册表中。 https://github.com/PowerShell/openssh-portable/releases/tag/v8.1.0.0文件contrib/win32/win32compat/ssh-agent/keyagent-request.c

从好的方面来说,这个实现在存储密钥的私有部分使用了 DPAPI。 另一方面,如果有正确的权限,ImpersonateLoggedOnUser 可以用来解密这个存储的密钥。

遗憾的是,这个实现没有使用原始的严格删除方法( BN_clear_free )——一个简单的RegDeleteTreeA就足够了。 因此,对于真正的删除,需要修改 ntuser.dat.log。 磁盘上私钥的实际存储与原始手册页不兼容:

The agent initially does not have any private keys.

总而言之:虽然叫同名,却是截然不同的东西。 关于使用这个 ssh-agent 实现的一些警告:

  • 它将密钥存储在磁盘上 - 切勿在共享或访客情况下使用
  • (痕迹)密钥在删除后仍保留在磁盘上
  • 此实现在安全的关键方面不符合 openssh 手册页 ssh-agent.1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM