什么是触发即时消息中隐藏的“求救信号”的好方法?

信息安全 验证 隐私 身体的
2021-08-11 12:15:11

这是场景:

Alice 和 bob 使用非公开消息通过 IM 进行通信。有:

  • 加密
  • 验证
  • 推诿
  • 完美的前向保密

他们在验证后进行通信,合理地确定彼此的身份。现在,一群流氓闯入了爱丽丝的房子。

Alice 知道他们可能想强迫她发送消息,或者她只是想发送求救信号。输入“救命!” 不会有多大好处,因为攻击者会意识到外界知道她的痛苦。

你可以想象她可能会输入一条之前协商好的求救消息(“鲜花也很可爱”),这会导致 Bob 的客户端弹出一条消息:

  • 爱丽丝陷入困境 - 在您再次验证她的身份之前不要相信以下消息。她被强迫发送它们。

但是入侵者可能会过快地迫使她离开电脑。他们也可能会向她口述信息,从而消除她输入鲜花句子的能力。

在这种情况下,触发求救信号的好方法是什么?

我们在聊天时发现的一些问题:

  • 胁迫者不能检测到爱丽丝正在发送求救信号。既不是看她,也不是分析网络流量。这甚至可以防止复杂的方案,例如“在一分钟内使用字母表的所有字母”(也违反了Kerckhoffs 原则)。

  • 信号必须设计成不易被意外触发,因为错误的求救信号会强制(令人讨厌且可能存在缺陷)信任重新协商措施。它应该是一个易于使用的协议。

假设:

  • 用于在 Alice 和 Bob 之间发送消息的协议是众所周知的协议。
  • 对手与爱丽丝物理上存在。
  • 对手将允许 Alice 发送消息,除非他/她认为 Alice 正在发送求救信号。
  • Alice 将始终被允许发送第一条消息。
  • 攻击者将监视通道上的消息。
  • Alice 将只被允许发送一些消息。
  • 对手决定了 Alice 发送的消息的内容,而不是它们的格式。
  • 攻击者将允许 Alice 接收所有远程消息。
  • 攻击者不知道 Alice 和 Bob 之间的传输延迟。
  • 渠道可靠。
4个回答

我相信您的要求列表过于局限,无法提出一个明智的方案,但是如果您稍微放宽您的标准,可能会提出一些建议。

在不指定其形式的情况下,Alice 必须向 Bob 发出信号。该信号将 Alice 的遇险状态从默认状态切换到相反状态。如果默认状态是 Alice 没有遇险并且信号切换遇险,那么攻击者总是可以通过简单地断开所有通信来击败系统(即,在闯入之前切断互联网线路)。

相反,正如@Karrax 所考虑的那样,默认值必须是 Alice 处于遇险状态,并且信号会切换她直到超时才处于遇险状态,此时 Alice 必须再次发出信号以保持她的非遇险状态。有两个问题:信号的性质和超时时间的长度。

有很多实现信号的方法,例如 Kerckhoffs 原则定律。一个例子是紧急密码请注意,拥有两个密码(或密钥或令牌等)是不够的,一个是真实的,一个是恐慌的,因为知道系统的对手可以执行以下操作:告诉 Alice 他知道她有两个密码,让她写他们都倒下,掷硬币选择使用哪个,并在 50% 的时间内逃脱攻击。更复杂的方案可以解决这个问题:见论文(自我推销,我知道:对不起)。

另一种实现信号的遥远方法可能是使用爱丽丝的皮肤电导来衡量她的紧张程度。去年在 Usenix Security 上就有这样的提议。

更棘手的一点是超时。如果超时时间过长,那么攻击者可能会闯入并在最后一个信号超时时完成。如果它太短,你会有一个巨大的可用性问题。事实上,我认为无论采用何种方法,您都会遇到可用性问题。

出于这个原因,我认为不可能解决您想要的确切问题。

缓解问题的一种方法是,Alice 可以在对手的被动监视下可靠地传输(无需修改)一条消息(请记住,如果他处于活动状态,他可以阻止所有消息)。在这种情况下,默认可以是 Alice 没有处于困境中,而 Alice 将简单地使用一些预先建立的机制(例如一个遇险词)与 Bob。在这种情况下,问题本质上是隐写术,并且由于 Alice 只需要使用人工计算对信号进行编码(即认知强制抗性),您将永远无法证明该方案是安全的。你只能相信它看起来很合理。

在我看来,您将两个问题空间混为一谈。首先是胁迫代码的直接问题,这是一个深入探讨的人类安全问题。(而且通常没有好的答案——Leo Marks 曾将 SOE 的代理人“安全检查”描述为有利于让代理人放心,仅此而已)。

第二个问题空间是通信的技术渠道如何受到攻击者的存在和知识的影响。

我认为您将它们混为一谈的原因是因为您似乎在询问是否可以将保护措施放入可以解决胁迫代码问题的技术渠道中。我的回答是,不,因为您实施的任何保护都将受到与胁迫代码完全相同的通过/失败标准的约束,此时您又回到了胁迫代码问题。例如,胁迫代码最具挑战性的含义之一是如何保持与受感染方的持续通信,这将欺骗攻击者相信他们在愚弄你(所以攻击者不会,你知道,射击中介)。我的观点是,根本没有技术解决方法来欺骗一个判断另一个人(语音、文本、莫尔斯电码等)通信的人。胁迫代码问题在人层运行;如果您在下一层有未加密的 UDP 或 IPSec 或量子密码术,这并不重要。

我不知道这是否对你有帮助:)

当爱丽丝打字时,她已经在不断地输入她是正确的物理人的验证,并输入她目前的压力水平。

我们只是传输她在打字时使用的击键动态,这将为她的身体自我提供生物特征,洞察她目前的心理状态(压力水平),以及一种提供合理否认的方法。对话的文本日志不会反映此信息。

Keystroke Dynamics 已被证明足够可靠,以至于有超过 15 家公司出售某种形式的这种解决方案以满足一种或另一种需求。

我的第一个答案将与@PulpSpy 的“恐慌密码”类似——事实上,我最初在最初的聊天中提到了类似的东西...... :)
(总的来说,看起来他有最完整的答案,甚至有研究支持自己:))。

然而,正如@gowenfawr 所提到的,这实际上是一个人类空间问题,即使是恐慌密码也很难绕过这两个问题空间的混淆。

另一个解决方案-而且,适用性将取决于大大的场景-将限制什么身份验证的用户可(被迫)做
如果爱丽丝只是想向鲍勃发出她的生命处于危险中的信号,这将不适用;这可能与@this.josh 在评论中提到的情况有关:

... 流氓一方在物理上胁迫你,即用枪指着你的头,并强迫你向远程一方发送消息。即“将所有资金从账户 12345 转移到账户 67890” 您可以假设攻击者知道通信协议应该如何工作,因此攻击者可以检测到明显的偏差。

与 Alice 试图向 Bob 发出信号不要执行转移不同,因为她是被强迫的,相反,系统不应允许仅基于来自 Alice 的 IM 消息来执行这样的转移。
这适合介于"Least Privilege"“自适应身份验证”和“自适应身份验证”之间...

同样,当银行安全变得更加严密时,出现了绑架银行经理家属,并胁迫银行经理为他们进行银行盗窃的“趋势”。
银行通过甚至不允许银行经理自己提取过多现金来解决这个问题(成功吗?我不确定)。

换句话说,与其担心爱丽丝的身份,不如限制她的身份所能做的事情——这样,用枪指着爱丽丝的头的动机也会减少,因为即使她想也帮不上忙。


请注意,这实际上并没有回答标题问题(如何发出信号),而是试图首先规避这种情况。
再一次,这不会帮助 Alice 向 Bob 发出她的生命处于危险中的信号——除非 Bob 知道 Alice 甚至不会尝试这样做,因此遵守强制实际的信号。(迂回的逻辑,我知道……)