CoAP协议学习笔记可点此查看。
在之前的学习中,没有过多关注加密。但实际部分厂家的IoT平台(阿里云、OneNET)已经启用了相关安全处理,有必要深入学习下。
在 CoAP 协议 RFC7252 的第9章 Securing CoAP ,即是本译文内容。
本节描述了 CoAP 的 DTLS 绑定。
在配置(provisioning)阶段,要提供给CoAP设备它必须的安全信息,包括密钥资料和访问控制列表。本规范定义了RawPublicKey模式中的配置处理。在配置阶段结束时,设备将处于四种安全模式之一,同时具有给定模式的如下信息。NoSec和RawPublicKey这两个模式在规范中是强制执行的。
在“NoSec”模式下,系统只需通过普通的UDP over IP发送数据包,同时指示“coap”协议 scheme 和 CoAP 默认端口。 只有让攻击者不能通过CoAP节点发送或接收来自网络的数据包,才能保护系统安全; 请参阅第11.5节了解这种方法的其他复杂情况。
其他三种安全模式使用DTLS实现,同时指示“coap”协议 scheme 和 DTLS保护的CoAP 默认端口。结果是一个安全关联,可以用来进行ID验证(在安全模式范围内),并基于此ID验证来授权通信伙伴。CoAP本身不提供用于认证或授权的协议原语;在需要时,可以通过通信安全(即IPsec或DTLS)或通过对象安全(在有效载荷内)来提供。需要特定操作才能授权的设备预计需要以下两种安全形式之一。在涉及中间人的情况下,通信安全通常只在中间人是信任关系的一部分时才起作用。CoAP没有提供转发的方式来处理不同级别的授权,比如客户端可能有一个中间人来转发中间人或原始服务器的消息 - 因此可能需要在第一中间人执行所有授权。