11. Security Considerations (安全考虑)
本节简要分析了CoAP的安全考虑. 主要安全机制建议是DTLS [RFC6347]. CoAP的安全环境和要求在[CoAP-SECUR]中进一步讨论.
主要安全问题
解析协议和处理URI: 实现应该仔细验证和清理输入, 以防止缓冲区溢出和注入攻击.
代理和缓存: 代理和缓存可能会引入额外的安全风险, 包括信息泄露和中间人攻击. 使用DTLS保护代理到服务器的连接很重要.
放大风险: CoAP请求可能导致比请求本身大得多的响应, 这可能被用于放大攻击. 服务器应该实现速率限制, 并且对组播请求的响应应该延迟.
IP地址欺骗攻击: 在UDP上运行使CoAP容易受到IP地址欺骗攻击. 使用DTLS或IPsec可以减轻这种风险. Token的随机化也有助于防止响应欺骗.
跨协议攻击: CoAP到HTTP代理可能会被利用来执行跨协议攻击. 代理应该仔细验证请求, 并在转发之前清理头部和URI.
受限节点考虑: 受限节点可能没有足够的资源来实现完整的安全机制. 在这种情况下, 链路层或网络层安全性可能是合适的替代方案.
安全模式建议
- NoSec模式: 仅在可信网络中使用, 或与链路层/网络层安全结合使用
- PreSharedKey模式: 适用于预先配置密钥的封闭系统
- RawPublicKey模式: 为M2M部署提供良好的平衡
- Certificate模式: 提供最强的安全性, 但资源开销最大
实现者应该根据其特定的威胁模型和资源约束选择适当的安全模式.