是否有签名的 SSH 密钥对?

是否有签名的 SSH 密钥对?

我们正在应用程序中将文件传输到远程服务器,所需的身份验证方法是使用 SSH 密钥。

因此,我使用 ssh-keygen 创建了密钥对,并提交了我的公钥以插入远程主机的 authorized_keys 文件中。但是,IT 安全部门拒绝了这一请求,他们表示会为我生成密钥对并向我发送私钥。原因:“我们需要 IT 安全团队对 SSH 密钥进行签名。这是为了确保我们在跟踪和问责方面有所领先。”

显然,我对此有异议。拥有其他人生成的私钥意味着我可以让那个人冒充我而我却不知情。我正在尝试找到反驳这一论点的方法。

据我谷歌搜索,似乎没有任何已知的方法来对密钥进行签名,以便帮助追踪签名者。我提交了我的公钥,这意味着我拥有该密钥,并且使用该密钥登录远程服务器的任何人都默认被识别为我自己。签名有什么用呢?他们到底要如何签名呢?

如果我错了,请提示我,谢谢!


好的,既然我们已经确定 SSH 密钥无法签名,我需要向 IT 安全部门展示他们如何真正跟踪谁登录了(我想,这必须具有建设性,否则就会开始专横跋扈)。在我自己的服务器上,我将 sshd 的 LogLevel 设置为 DEBUG。所以现在当我登录时,我可以看到以下代码片段:

Found matching DSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

这似乎是一个哈希值。我如何将其与 authorized_keys 文件中所使用的公钥联系起来?我知道还有另一行内容:

debug1: matching key found: file /home/bofh/.ssh/authorized_keys2, line 1

但这并不那么有用,因为如果我在文件顶部插入一个键,将原来的键向下推,行号就很容易被更改。

谢谢!

答案1

自从你提出问题以来,宇宙已经发生了变化。

Openssh5.4 增加了对您需要的证书类型的支持。请参阅发行说明http://www.openssh.org/txt/release-5.4(以及手册页)了解更多信息,或者如果你真的想疯狂一下,看看协议.certkeys血腥细节

答案2

读到您的问题时,我的第一印象是 IT 人员混淆了 SSH 和 SSL(必须由我们签名),并且不了解 SSL 签名的实际工作原理。

无论如何,没有办法对 SSH 密钥进行签名(就我所知)。

答案3

这个请求有些不对。

如果它要向服务器传送签名的文件,
我希望这至少能完成。

  1. 你为自己创建一个密钥对(称之为我的密钥)
    • 当你想发送某些东西时,
    • 你首先用my-key-private
    • 然后将此加密文件上传到服务器
    • 服务器上的某个人必须像这样逆转这个过程,
    • 他们使用你的my-key-pub来解密文件
    • 如果你已经发送了文件,解密将恢复它
    • 否则,他们将得不到任何可用的文件
    • 实际上,你已经用你的私钥签署了该文件
    • 他们已经用你的公钥验证了签名
    • 他们确认你已经发送了文件,即可追究责任

还有其他方法可以实现这些目标,
然而,获取他人生成的密钥对作为身份验证方案是无用的.
这强烈暗示着你信任他们就像信任你自己一样。


这些是您可以向 IT 部门询问的开场问题。
如果问责令人担忧对于 IT 部门来说,

  1. 他们如何确保您不会共享/丢失他们给您的密钥对?以及,
    • IT 提供的密钥对概念与 IT 部门给您的密码有何不同?
      在这种情况下,为什么要费心使用密钥对呢?

答案4

没有理由不能使用 X.509 证书代替裸密钥进行 SSH 身份验证 —— 事实上,我更喜欢 OpenSSH 以这种方式工作!但是,OpenSSH 的现有版本没有这样做,而且它是当今的主流实现。

我看到一些 OpenSSH 的修补版本可以做到这一点,而商业 SSH.com 实现似乎也支持 X.509 身份验证。因此,如果您的组织正在使用其中一种,要求密钥由中央机构签名将非常有意义。

话虽如此,要求第三方生成私钥是没有道理的!如果他们采用 X.509 路线,那么他们应该让你生成一个密钥对和一个证书签名请求,就像你对用于 SSL 等的任何其他 X.509 证书所做的那样。

相关内容