如何使用dtls协议抵御重放攻击

dtls 协议

    DTLS(Datagram Transport Layer Security),数据包传输层安全性协议,怎么使用有很多灵活性,只要掌握其中得基础概念,怎么使用都是靠人。
    其协议分为了两层,第一层为RL,第二层为HL
1 Record Layer:每条信息会加上header,尾部加上校验和,实际上就是标注自己得协议和校验。
2 Handshake Layer:提供给高层协议使用数据封装、压缩、加密等基本功能的支持,实际上是握手过程加上传输。

dos攻击

    DoS是Denial of Service的简称,即拒绝服务攻击,尤其是udp这种协议,由于不用链接和三次握手,所以给了攻击者一个方法:消息重放。
    消息重放也是 DoS 攻击的一种,攻击者可以截取发送者发送的数据,并直接原封不动地发给接收方,来达到欺骗接收方的目的。

    DTLS 增加了类似 IPsec AH/ESP 的消息重放检测,使用一个 bitmap 滑动窗口来接收消息,结合消息本身的序号,bitmap 可以判断该消息是否是太老的消息,是的话则直接抛弃。

    但这个有一个问题,就是 UDP 报文的重复有可能只是单纯因为网络错误而重发,这时候如何行事?

    所以DTLS协议可以加一个cookie得方式来做,也就是在握手中加入cookie,并且客户端必须将cookie进行加密验证,回送给服务端

当然,对于物联网场景下的DTLS,我们必须提供了一些扩展定义,这就是RFC7925,已经有了标准定义了。

总结

可以使用两种方式:
1 使用psk方式来增加cookie,握手过程比证书这种方式要轻量很多,虽然不是十分安全,但是握手过程对于dos这种重放攻击应该是够得,除非泄密。
2 使用非对称证书加密得方式来握手,这种方式更加安全,可以选择rsa或者ecc等非对称加密算法。

后面会给出一些示例代码。。。待续。。。

你可能感兴趣的:(IoT,物联网,网络,网络安全,数据安全,dos)