为什么 PGP 和 SSH 密钥在身份验证时没有将更广泛的用途视为第二个因素?

信息安全 SSH pgp u2f 多因素
2021-08-19 22:52:59

新兴的主要 MFA 方法之一是 U2F,它依赖于初始密钥交换和挑战-响应机制。

这是一个相对较新的协议,并且才开始得到更广泛的采用,尤其是在像谷歌这样的大型网络实体中,但它并不是第一个易于使用、密钥交换、挑战响应机制;事实上,很容易想到两个:

  • SSH,自 1995 年以来一直存在,并且自 2000 年以来基本上可以在每个 Linux 和 BSD 机器上使用,通过旧版本的附加软件和新版本的内置软件在 Windows 上越来越多地采用;

  • PGP 自 1991 年就已存在,实际上已包含在一些较新的 Yubikey 中(尽管存在争议,在最新一代中采用闭源实现),以及全球数百万台 PC用于大量操作系统的高质量、积极维护的实现和库。

使用这些广泛可用的协议/标准中的任何一个(分别)作为 MFA 机制似乎非常有意义,而不仅仅是 SSH 连接到远程机器或加密电子邮件;那么为什么在 U2F 蓬勃发展的地方都没有获得任何牵引力呢?

4个回答

让我们看看 PGP 和 SSH 为此实际提供了什么:

  • PGP:
    客户端必须安装PGP软件,大部分系统默认不安装。客户端必须创建一个 PGP 密钥对。然后他必须将公钥发送到服务器,以便服务器稍后可以使用它进行验证。当使用 2FA 进行身份验证时,服务器将发送一个质询,客户端必须使用其私钥对其进行签名,并将签名的质询作为响应发送回。当然,客户端必须保护其密钥免遭盗窃,可能使用密码。
  • SSH:
    客户端必须安装大部分系统默认不安装的SSH软件。必须创建密钥对并将公共部分发送到服务器。当针对某些 Web 服务使用 2FA 进行身份验证时,客户端必须创建到相关服务器的 SSH 连接,并且服务器必须将使用 SSH 的成功身份验证和以某种方式登录到网站合并在一起,可能还有一些额外的令牌客户端在使用后必须提供SSH。哎呀,可能有防火墙阻止了 SSH。当然,客户必须保护密钥不被盗。

因此,基本上这两种解决方案都归结为:

  • 最初安装一些软件
  • 创建一个静态密钥对并发布公共部分(为方便起见,这可能会集成到软件中,但目前还没有)
  • 以某种方式从服务器获得挑战,并以某种方式将签名的挑战发回。并且服务器必须以某种方式将挑战的验证集成到身份验证过程中。“不知何故”,因为还没有为此建立的流程,它将所有内容与 Web 应用程序中使用的身份验证流程集成在一起。
  • 当然,客户必须保护其密钥

使用客户端站点 TLS 证书可以更轻松地完成相同的过程。这仍然使证书的创建成为一个主要问题(但这在今天的浏览器中也是可能的),但至少验证已经集成到 HTTPS 协议中。

此外,我看不出这些解决方案如何提供比现有 2FA 解决方案更好的用户体验或集成体验。它们不容易使用,需要额外的软件,需要与服务器端集成的新方法等。而且它们也不能提供更好的安全性那么,为什么要关心而不是采用在设计时考虑到可用性和服务器集成的新解决方案呢?

除此之外,目前廉价的 2FA 解决方案使用手机。这些通常提供比当前 PC 更好的安全架构。它们是用户必须访问的附加硬件设备,这使得 2FA 提供的保护更加强大。

缺乏便携性

SSH 和 PGP 被广泛使用,但它们不是 Web 技术。多年来一直存在等效的 Web 技术 - SSL 客户端证书。但是,这个用处不大。

原因是缺乏便携性。如果您的家庭桌面上有 SSL 客户端证书,则很难将其移动到其他地方。所以你不能从你的工作笔记本电脑、你岳母的台式机等登录。

有一种便携式客户端证书解决方案已经存在了很长时间并且安全性非常高:智能卡。私钥存储在智能卡中,永远不会被释放。但是,这主要用于高安全性应用程序,例如企业网上银行。

在 2000 年代初期,围绕身份验证的创新有限。针对大众市场的努力,如 Microsoft Passport 和 OpenID,并没有真正起飞。大多数产品都针对高端产品:企业 VPN 访问等。这种情况现在正在发生变化,我们正在看到大众市场认证方面的创新。例如:

  • Mozilla 角色- 本质上是通过将客户端证书存储在云中来实现可移植性。几年前,这会被认为是一个疯狂的想法而被拒绝,但最近威胁模型得到了更好的理解,并且好处也很明显。

  • U2F - 将智能卡的高安全性带入大众市场。这些设备更便携,在许多不同的网站上使用一个设备是安全的。因此,U2F 是一种非常适合现代使用模式的技术——因此它是成功的。

因为理想情况下,额外的身份验证因素应该是带外的。就像电话、令牌或某种心灵感应信息。

U2F 很好,因为您无法提取私钥,并且在签名之前需要对设备进行物理接触。

对于普通大众来说,任何 2-Factor 身份验证都应该在 2 分钟内理解,否则它将很快失败,因为很少有人能够理解它。这通常需要使用人们已经熟悉的东西,或者非常简单。

PGP 和 SSH 是很少有人了解的复杂技术,除了开发人员和 IT 运营人员。正如斯蒂芬指出的那样,两者不仅需要安装软件,还需要了解生成文件的非常复杂的方法,将它们发送给第三方,以及(更糟糕的是)了解所涉及的基本概念。对于普通人来说,这需要很多小时的培训、反复试验和全新的概念。即使那样,您的失败率也会很高。

将其与 2-factor 中使用的解决方案进行对比。短信、显示数字的硬令牌或电话。短信和电话是人们已经熟悉的东西。硬令牌稍微复杂一些,但用户可以在 2 分钟内接受培训如何使用这些设备,因为它们很简单。