我试图找出最有效的数据使用方式来保护我们的 CoAP API。DTLS 似乎是正确的方法,但看看握手需要多少数据(并对需要发生的频率做出一些不知情的假设)似乎带有 X.509 证书的 DTLS 使 CoAP 的实际数据使用相形见绌本身。
最明显的解决方案是只使用在工厂编程的对称密钥,但我认为我不喜欢强加的安全风险。据我了解,除了在所有设备上手动安装新密钥外,没有办法从服务器端入侵中恢复。
我正在考虑提出的解决方案基本上是两者的混合,使用安全 CA 分发设备,让设备进行标准握手并建立“临时”对称密钥。然后为了节省设备的带宽,我将该密钥(会话?)存储在数据库中,以便设备一次持续数月或数年,但如果我们发现任何密钥已经泄露,仍然可以使密钥过期。
我知道我可以只使用标准会话恢复握手来恢复会话,但我不确定这是必需的,因为 DTLS 是无连接的,我可以假装“连接”总是打开的。如果我可以避免重复握手,这将降低数据消耗并可能降低服务器负载。
我不知道的是:DTLS 是否定义了会话可以保持打开状态的限制?或者是否存在超时,在一段时间不活动后必须删除会话?如果没有,DTLS 的实现是否自己定义了一个?
关于为什么这不起作用,我可能会忽略其他任何事情吗?还是有什么更简单的我没有想到的?