是否有签名的SSH密钥对之类的东西?


9

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

因此,我使用ssh-keygen创建了密钥对,并提交了公共密钥以将其插入到远程主机的authorized_keys文件中。但是,这被IT安全部门拒绝,后者说他们将为我生成密钥对并将私钥发送给我。原因:“我们需要SSH密钥由IT安全团队签名。这是为了确保我们在跟踪和问责制方面具有领先优势。”

显然,我对此有疑问。由别人生成私钥意味着我可以让那个人在我不知情的情况下伪装成我。我正在尝试找到反驳此论点的方法。

据我所知,似乎没有任何已知的方法来对密钥进行签名,从而有助于跟踪登录者。我提交了公共密钥的事实意味着我拥有该密钥,并且使用该密钥登录到远程服务器的任何人默认都被标识为我本人。签名有什么帮助?以及他们将如何签名?

如果我错了,请有人帮助我,谢谢!


好的,既然我们已经确定无法对SSH密钥进行签名,那么我需要向IT Security展示如何真正跟踪谁在登录(如果不是那么高手的话,那应该是建设性的) )。在我自己的服务器上,我将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

但这没有用,因为如果我要在文件顶部插入一个键,然后向下推原始键,则可以轻松更改行号。

谢谢!


2
也许他们会打印密钥,在纸上签名然后归档?
innaM 2009年

您获得的哈希值很可能就是所谓的密钥指纹。我建议查看openssh手册,以了解如何列出这些指纹。
Niels Basjes,2009年

制定这项政策的最可能原因是,他们实际上希望能够在需要时冒充您。签名的论点只是BS,以使其听起来对新手似乎合理。即使他们确实需要签署公钥,也不需要自己生成它。
2011年

Answers:



8

在阅读您的问题时,我的第一印象是IT人员混用了SSH和SSL(必须由我们签名),并且也不了解SSL签名的真正工作原理。

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


+1不能以与PGP或SSL证书相同的方式对ssh密钥进行签名。我会要求他们澄清。
David Pashley 09年

4

此请求中有错误的地方。

如果它将已签名的文件传递到服务器,
我希望可以做到这一点。

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

还有其他方法可以执行此类操作,
但是,获取由他人生成的密钥对作为身份验证方案是没有用的
它对您的信任与对自己的信任一样重要。


这些是您可以向IT部门提出的开放性问题。
如果问责制是 IT部门关心的问题

  1. 他们如何确保您不共享/丢失他们给您的密钥对?和,
    • “ IT密钥对”的概念与IT给您的密码有什么不同。
      在这种情况下,为什么还要打扰密钥对呢?

您正在考虑使用PGP / GnuPG来加密文件。在这种情况下,密钥签名是正常的。最初的问题是关于SSH密钥的。如果他们要求提供PGP签名/加密的SSH密钥(在验证并签署了彼此的PGP密钥之后),这将很有意义。
pgs

@pgs,我正在尝试查看IT人员在此定位的目标。
NIK

我非常确定安全人员会感到困惑,但是由于他是我客户公司的IT安全人员,而不是我的同事,所以我需要更加机智,并建设性地推销自己,不要嘲笑他并说他有事情混合。是的,它绝对是SSH,而不是PGP。
feicipet

@feicipet,保持机智是我的最后几点对您有帮助的地方。
NIK

@feicipet,您的目标是最终使他们意识到正确实现其意图所要做的最低限度。
NIK

2

没有理由不能使用X.509证书而不是裸键进行SSH身份验证-实际上,如果OpenSSH如此工作,我会更喜欢它!但是,OpenSSH的普通版没有,这是当今的主要实现方式。

我已经看到了一些修补版本的OpenSSH随处可见,并且商业SSH.com实现也似乎支持X.509身份验证。因此,如果您的组织正在使用其中之一,则要求密钥由中央机构签名将很有意义。

就是说,没有任何借口要求私钥必须由第三方生成!如果他们要使用X.509路由,那么他们应该让您生成一个密钥对和一个证书签名请求,就像处理用于SSL的任何其他X.509证书一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.