动态通信秘密的应用程序级等价物是什么?

信息安全 无线的 秘密分享
2021-08-19 06:35:45

对于软件开发中的安全相关问题,我可能只是很厚,而且足够新,但由于我找不到信息,而且我一直在谷歌上搜索一段时间。

最近我看到一本书,Dynamic Secrets in Communication Security(亚马逊也有),现在想知道,这种技术在套接字编程中是否有等价物?还有论文从稀薄的空气中创建共享的秘密对这个想法有很好的描述。

简而言之,据我了解,这个想法是基于无线信道中的传输特性(例如故障)动态生成通信秘密,如果它不存在于无线传输介质的许多地方,那么对手很难猜到。因此,即使对手拥有大量的计算能力,通信通道也是安全的。这也将允许参与方检测流量是否已被劫持。

是否有一种已知的方法可以基于例如交换的每条消息生成动态秘密,并获得这样的安全性以检测流量劫持并使通信能够抵抗具有大量计算能力的对手?我不在Diffie-Hellman之后,因为它仅适用于启动,但可能类似于IPSec Encapsulating Security Payload

3个回答

第二篇文章(Safaka等人)描述了一个协议,该协议基于大致类似于我在此答案末尾描述的 Cachin-Maurer 协议。前提是相关各方之间存在广播不可靠的通信通道,因此当一方发出“数据包”列表时,所有其他人只能看到部分数据包,而不是所有人都看到相同的数据包。因此,Alice 和 Bob 希望建立一个共享的秘密,只需要发送大量数据包,记录他们收到的内容,然后告诉对方他们收到了哪个数据包(数据包由某个常规 ID 引用)。攻击者很有可能无法看到所有内容 Alice 和 Bob 都记录的数据包,因此所有数据包的连接,适当的散列,是一个很好的共享密钥。

在 Cachin-Maurer 协议中,广播来自高带宽随机源,接收的不可靠性是由于无法记录所有数据,因为它的绝对大小。在 Safaka 协议中,假设传输介质是不可靠的,这有点乐观,因为攻击者可能会投资一个好的天线,这比诚实人的基本 WiFi 适配器更能接收无线电波。

将这一原则传输到应用程序级别看起来很难,因为“应用程序级别”的真正基本特征,我们称之为“应用程序”的原因,是其固有的可靠性例如,原始 IP 数据包是不可靠的:它们可能会丢失、重复,有时会被更改(我见过:具有坏 RAM 的 Cisco 路由器),并且无法按顺序到达。然而,应用程序做的第一件事是应用TCP,它带来了可靠性(通过确认和重新发送)。当传输可靠时,它对每个人都是可靠的,包括攻击者。

这是一个普遍的趋势:我们正在谈论的那种密钥交换协议必须依赖于一些物理过程,这会带来一些不可预测性;在 Safaka 协议中,物理过程是无线电噪声干扰某些数据包的接收。另一方面,计算机世界是数学的而不是物理的:它在一个抽象的世界中生活和奋斗,在这个世界中,一点就是一点,不会随机翻转。事实上,当一个 RAM 位被翻转时(据说这对于给定的机器平均每三个月发生一次,因为宇宙射线),机器可能会崩溃,具体取决于所述位的位置。计算机化的整个原则是远离物理世界,并尽可能远离它。这从本质上阻止了 Safaka 类协议的有效使用,当我们进入更高的层堆栈时更是如此,即正如您所说的“在应用程序级别”。

第二点是这些协议是密钥交换,而不是身份验证它们可能仅针对仅被动的攻击者提供安全性,这些攻击者观察但不干预。这在当今是不现实的假设。许多网络攻击都涉及攻击者的积极行动;并且一些低功率攻击者可以被描述为“仅主动”:向服务器发送虚假数据包通常比在服务器和诚实客户端之间窃听数据包容易得多。

因此,需要进行一些身份验证:您通常不想交换密钥,而是与特定客户端或服务器交换密钥。为此,您需要一些身份验证机制,该机制在此过程的早期发生,例如使用公钥或一些PAKE,然后您又回到“正常密码学”,使类似 Safaka 的协议变得毫无意义。

汤姆提出了一些好的观点。该方案适用于有损网络。应用程序级别可以使用诸如 UDP 之类的东西,大量的数据包以及发送、接收和计时的统计信息。它不如预期的域好:像无线这样的有损网络。所以,这听起来很难做到,这就是我的专长,所以为什么不试一试。;)

(重要提示:最好将现有的加密库和技术用于重要工作。更安全、更实用等。这仅用于教育和娱乐目的。)

主要假设是他们的存在有限。它们不在每个端点,因此它们会丢失数据包。关键是他们错过了数据包。我们可以在应用程序级别做到这一点。这里有几种可能性。

  1. 同时使用多个沟通渠道。一次性发送 UDP、电子邮件、ping 和 DNS 放大数据包。

  2. 使用允许 SSL 连接且不记录流量的第三方中继。如果您不想只信任一个,则将密钥拆分为多个。在实践中与其他协议具有大致相同的效果。

  3. 当使用中继或不可靠的数据包时,将它们发送到一个特定的路线,该路线前往只有一条主要海底光纤连接它们的国家。另外,在高峰时间发送。拥塞的不可预测性应该会有所帮助。

  4. 在 UDP 和通过 Mailinator 发送的电子邮件之间进行拆分。

老实说,依赖于协议和数据的混淆交换的方案比依赖通道噪声的方案要好。在我们相当优化的互联网中,不能依赖这种渠道属性。不过,如前所述,这一切都只是为了好玩。

一般来说,动态秘密是对传统(又名 Kerckhoffs)密钥密码系统设计模型的修改。Kerckhoffs 断言,密码系统应该假设除了密钥之外的所有内容都是对手已知的。这样的假设在战场场景中是有效的并且接近现实,士兵们携带密码机并在他们的大脑中保存密码(如果他们能记得这么清楚的话......)

这样的模型在当今世界并不是 100% 实用的,尤其是在民用世界的安全通信中。一方面,假设密钥始终是秘密是不可靠的。攻击者不时窃取用户名密码和加密密钥,例如使用特洛伊木马程序。另一方面,这是一个强有力的假设,即对手知道其他一切。例如,实际上不可能窃听无线通信中的每个传输比特。这些想法促使 UMass 的人(Xiao 等人)产生了动态机密的想法,并起草了 INFOCOM 论文和《通信安全中的动态机密》一书。他们向他的欧洲同事介绍了这个想法,然后他们跟踪研究并生成了新的 INFOCOM 论文。