机器是否有多重身份验证?

信息安全 验证 多因素
2021-08-16 20:08:44

我在多因素身份验证(例如维基百科这里)上看到的大部分内容似乎都是以人为中心的。即它是与机器交互的人,并且这些因素与向机器验证人的身份相关联。这些因素与一个人有关:

  • 你知道的东西(pin、密码等)
  • 你有的东西(代币、手机等)
  • 你是什​​么(语音识别,指纹等
  • 你在的某个地方(位置 - 你在你应该在的地方,或者你在某个“不合适”或“不那么受信任”的地方)

如果所有这些,“你”就是一个人。单因素身份验证通常是“您知道的事情”,并且由于键盘记录器、恶意软件、字典攻击以及针对持有密码的服务器的所有漏洞的普遍存在,现在被认为不太安全。因此,安全社区提出了这些其他因素来降低风险。

机器对机器通信是否存在多种因素?我们的大多数机器通过 ssh 进行通信并且是“单一因素”(机器“知道”的东西)。因为它是一台机器,所以使用“强”键(即长键)。由于它们的长度,它们不太容易受到字典攻击。然而,它仍然是“单一因素”——一旦您知道密码,系统就可能受到威胁。

iptables 和防火墙规则可以被视为类似于“您所在的地方”的第二个因素。适当的限制有助于限制攻击面。

@tom-leek 指出“对人的威胁是模仿”和“对机器的威胁是颠覆”之间的区别。一旦电脑被颠覆,“电脑能做什么,它就能做什么”。我对那台被颠覆的原始计算机之外的涟漪感兴趣。即使我破坏了被破坏的计算机(在云应用程序中很容易做到),攻击者仍然知道 ssh 密钥并且可以从其他机器使用它们(即,这是一种模拟威胁)。我相信减轻这种情况的标准方法是拒绝该公共 ssh 密钥。这会影响到许多其他机器,我想知道是否还有其他因素可以帮助解决“冒充”威胁。

机器对机器身份验证中还有哪些其他“因素”?

4个回答

在对人类进行身份验证时,主要危险是冒充:其他人冒充预期用户。由于人类是生物而非数字世界,因此这两个世界之间必须存在某种联系:将物理身份的概念与计算机可以提供的比特序列联系起来。

我们使用多因素身份验证,因为我们能想到的每一个因素都比较弱。密码可以被猜到(它们不能被猜到,因为否则用户不会记住它们)或抓取(通过用快节奏摄像机记录键盘的实际输入 - 使用简单的望远镜,这可以在几英里外完成!)。生物识别技术需要视觉控制(即武装警卫验证指纹读取器上发生的事情确实是仍然连接到人类其余部分的人类手指)。硬件设备可能被盗(尤其是智能手机,最容易被盗的物品)。通过将几个因素叠加在一起,我们希望能够应对这种糟糕的情况。

有了电脑,情况就完全不同了。任何计算机都可以包含一个非常健壮的身份验证令牌,例如一个大的非对称密钥计算机的主要危险是颠覆的确,计算机能做什么,它就能做什么。这意味着如果给定的服务器被黑客入侵,那么该服务器可以使用的所有“身份验证因素”现在都可以被攻击者平等地访问。因此,暗示计算机控制的认证因素失败的场景,即补充认证因素被认为有用的场景,恰恰是额外的认证因素根本没有增加任何好处的场景。

您可以想象一个混合的人机设置:计算机包含一个私钥,用于与其他计算机进行身份验证,但该密钥以计算机不知道的密码加密存储;它必须在启动时(或可能定期)输入。将带来一些额外的安全性,至少在某些颠覆的情况下。但是,无法以自动方式重新启动的服务器往往不受系统管理员的欢迎。

通过 2FA 对机器进行身份验证的唯一方法可能是使用可用于加密/签署消息的物理加密狗或 HSM(硬件安全模块)。这是冒名顶替者无法通过对机器的逻辑访问(例如存储在机器本身上的密钥)来窃取的东西。HSM 必须被盗才能冒充机器。

您已经找到了两种最常见的识别机器的方法: - 它在哪里 - 它如何识别自己

它在哪里,以及你如何确定它,是它在哪里的函数。在本地 LAN 上,许多产品选择使用第 2 层 MAC 地址来识别系统。这还不错,但 MAC 欺骗并不是那么困难。如果您的网络可以在交换机上执行 MAC,这是一个足够好的安全措施,但仅作为多层方法的一层。LAN 上的另一台机器如果受到攻击,将无法欺骗 MAC 地址,因为交换机将拒绝不允许其打开的端口上的 MAC。这里的一个缺点是设置和维护这个环境的管理负担。

在网络的第 3 层和第 4 层,我们可以实施传统的防火墙/数据包过滤规则。您已经提到了这一点,如果做得好,这项工作会增加另一层安全性。数据包过滤可以在网络的主机、交换机或路由器/防火墙层,或全部 3 层完成。多做一个的好处是相关性和异常检测。

如前所述,用于加密通信和识别的系统上的密钥必须安全地存储,以防止被破坏的机器被冒充。

这些层一起是最典型的使用方法,如果做得好(全面)提供巨大的安全性。但是,它仍然没有关闭循环。

还可以添加两件事。

首先,设备分析。如前所述,大量日志记录有助于异常检测。所有这些输入日志的数据,如果相关,可以提供通知;但是,前提是您首先知道主机应该做什么。如果 Host-A 的目的是通过 TCP/22 与 Host-B 连接,则这是一种常规流量模式。如果突然之间 Host-A 试图通过一系列端口与 Host-B、C 和 D 连接,那么可能需要查看一下。

因此,行为成为识别的一个因素。(这有点像身份系统,它会尝试匹配您输入密码的方式,因此即使其他人知道他们的密码是什么,输入的方式也会有所不同。例如,我输入“密码”的方式" 在键盘上与暴力密码猜测器自动发送字符串完全不同。)

网络准入/访问控制 (NAC) 是您可以识别机器的另一种方式。哪些进程正在运行?安装了什么软件?代理必须收集该信息并将其提供给其他系统,该系统将决定是否应允许在网络上使用该信息。同样,现在我们正在分析机器。这让我们对机器是否是机器有了另一种看法。Tripwire,真正的旧版本和新版本,也通过散列所有文件来做类似的事情。这可能非常有用,因为被颠覆的机器可能会成为“坏人”。现在“坏人”看起来是合法的,但它可能安装了恶意软件,或者文件被替换了。

因此,确保一台机器真的是你认为的那台机器需要的不仅仅是两个因素。被颠覆的机器仍然是您认为的系统,但它也可能更多。因此,确保系统是您认为的那样的一个重要因素是分析系统本身,以及它在您的网络上所做的事情,或者与它交互的其他系统。

授权机器听起来像是一个布尔决策,但您可以设计分布式应用程序,使机器相互怀疑。

请注意,如果您可以伪造描述您想要行使的权限的消息,那么窃取秘密只会使滥用权限变得更容易,因此使消息更难伪造可以作为第二个因素。

在仅授权模型中,机器接收消息

+----------------------------------+
|Header: secret-key                |
+----------------------------------+
|Body:                             |
|debit account for Alice Smith     |
|credit account for Craig McEvil   |
+----------------------------------+

在标头中有一个秘密,或者用一个秘密签名,并且接收机器对所有这样签名的消息进行操作。

您可以通过使用不可猜测(又名加密强 PRNG)标识符识别原则来使消息本身更难伪造,而不是信任使用单个密钥到达的任何消息,这允许窃取密钥的人伪造消息,因此您的消息可能看起来像

+----------------------------------+
|Header: secret-key                |
+----------------------------------+
|Body:                             |
|debit account for ASVX009I...     |
|credit account for OAbB73I9...    |
+----------------------------------+

所以只有当攻击者也能获得一个不透明的、不可猜测的标识符时,他们才能耗尽一个帐户,从而降低系统故障的风险。

此外,如果您需要窃取多台机器的密钥以获取帐户标识符并借记帐户,则您已经提高了攻击门槛并扩大了可能检测到您的入侵的窗口。