主要的缺点是你自己想到了它。一般来说,除非实际存在,否则不应该试图在密码学相关问题上“聪明”或“创新” 密码学家 。缺乏关于工具,算法和攻击媒介的全面经验,确保加密强度的最佳方法是使用经过充分测试的标准化工具。这意味着DTLS。
在这种情况下,假设服务器还不知道所有客户端的公钥,一个问题似乎是对MITM攻击的敏感性。根据对称算法和数据报的内容,它也可能易受已知明文攻击或选择密文攻击的影响。再一次,这些是你应该阅读的一些内容,害怕,意识到这不是你想要花费你的时间,并使用DTLS。
这几乎听起来像是在尝试重新发明DTLS。你说DTLS有问题,但为什么会这样?
从理论上讲,你的逻辑是合理的。它让我想起DTLS与RSA密钥交换:
ClientRandom
ServerRandom
Pre-Master Secret
现在双方都有: ClientRandom , ServerRandom 这是公共知识和 Pre-Master Secret 仅通过非对称加密在网络上共享。只有证书的所有者知道解密所需的私钥 Pre-Master Secret 从网络通信,因此客户端验证服务器发送的证书是很重要的。
DTLS确定生成方法 Master Secret 从 Pre-Master Secret , ClientRandom 和 ServerRandom 和来自的对称加密/ MAC密钥 Master Secret 。 DTLS使用 Pre-Master Secret 而不是直接分享 Master Secret 用于模块化。从安全角度来看,分享应该同样安全 Master Secret 直。该 ClientRandom 和 ServerRandom 在技术上用作密钥生成中的盐。这保证了两个参与者在盐的加密安全性方面有发言权。
Master Secret
生成对称加密密钥后,参与者在结束握手之前进一步验证他们是否可以使用它们进行通信。
使用CBC时,加密数据包本身的形式为:
[ IV ] + encrypted( [ Data blocks ] [ HMAC ] [ Padding ] )
向每个数据包发送初始化向量会增加传输的开销,但可以抵御某些选定的明文攻击。然而,这只是针对不同攻击的安全措施之一。有效(D)TLS实现中存在许多不同的细微差别:忽略或隐藏错误条件,确保操作即使失败也需要持续时间等。
因此,尽管DTLS的安全理念可以概括为“向一个参与者共享公钥。使用非对称加密传输对称密钥。使用对称密钥加密通信”,还有更多小细节使其安全。当人们发明自己的安全措施时,这些小细节通常会失败。
通过验证证书可以减少有效的MITM攻击 - 当然在上述握手中,只有客户端验证服务器身份。如果您需要服务器验证客户端身份,客户端也需要发送自己的证书等。