这是场景:
Alice 和 bob 使用非公开消息通过 IM 进行通信。有:
- 加密
- 验证
- 推诿
- 完美的前向保密
他们在验证后进行通信,合理地确定彼此的身份。现在,一群流氓闯入了爱丽丝的房子。
Alice 知道他们可能想强迫她发送消息,或者她只是想发送求救信号。输入“救命!” 不会有多大好处,因为攻击者会意识到外界知道她的痛苦。
你可以想象她可能会输入一条之前协商好的求救消息(“鲜花也很可爱”),这会导致 Bob 的客户端弹出一条消息:
- 爱丽丝陷入困境 - 在您再次验证她的身份之前不要相信以下消息。她被强迫发送它们。
但是入侵者可能会过快地迫使她离开电脑。他们也可能会向她口述信息,从而消除她输入鲜花句子的能力。
在这种情况下,触发求救信号的好方法是什么?
我们在聊天时发现的一些问题:
胁迫者不能检测到爱丽丝正在发送求救信号。既不是看她,也不是分析网络流量。这甚至可以防止复杂的方案,例如“在一分钟内使用字母表的所有字母”(也违反了Kerckhoffs 原则)。
信号必须设计成不易被意外触发,因为错误的求救信号会强制(令人讨厌且可能存在缺陷)信任重新协商措施。它应该是一个易于使用的协议。
假设:
- 用于在 Alice 和 Bob 之间发送消息的协议是众所周知的协议。
- 对手与爱丽丝物理上存在。
- 对手将允许 Alice 发送消息,除非他/她认为 Alice 正在发送求救信号。
- Alice 将始终被允许发送第一条消息。
- 攻击者将监视通道上的消息。
- Alice 将只被允许发送一些消息。
- 对手决定了 Alice 发送的消息的内容,而不是它们的格式。
- 攻击者将允许 Alice 接收所有远程消息。
- 攻击者不知道 Alice 和 Bob 之间的传输延迟。
- 渠道可靠。