DTLS协议中client/server的认证过程和密钥协商过程

1.DTLS介绍

1.1 DTLS的作用

互联网先驱们最开始在设计互联网协议时主要考虑的是可用性,安全性是没有考虑在其中的,所以传输层的TCP、UDP协议本身都不具备安全性。SSL/TLS协议是基于TCP socket,在传输层和应用层之间构建了一个端到端的安全通道,保证了传输数据的加密性。

但是SSL/TLS协议并不能用于UDP协议,而UDP也有安全传输的需求,于是产生了DTLS协议(Datagram TLS)。

即DTLS的作用为给UDP提供端到端的安全通道,就像SSL/TLS对TCP的作用一样。并且DTLS尽可能参考了SSL/TLS协议的安全机制,在具体实现上复用了70%的TLS代码。



1.2 DTLS的特点

UDP协议是不面向连接的不可靠协议,且没有对传输的报文段进行加密,不能保证通信双方的身份认证、消息传输过程中的按序接收、不丢失和加密传送。

DTLS协议在UDP提供的socket之上实现了客户机与服务器双方的握手连接,并且在握手过程中通过使用PSKECC实现了加密,并且利用cookie验证机制和证书实现了通信双方的身份认证,并且用在报文段头部加上序号,缓存乱序到达的报文段和重传机制实现了可靠传送。

在握手完成后,通信双方就可以实现应用数据的安全加密和可靠传输。


1.3 DTLS协议层次

DLTS协议分为两层,下层为记录层(记录层),record包的内容分为头部和载荷两部分。记录包的载荷即为上层的内容。DTLS上层的包的类型分为三种,分别是握手消息,警告消息,应用数据;如图一所示。

                                                                                

                                                                  图一.DTLS协议的层次

在整个DTLS协议的通信过程中,通信双方构造报文段的过程都是先产生上层的载荷消息(如握手消息,应用数据,警告消息),然后添加头部,构成完整的上层消息。接着再以此作为记录层的载荷,最后添加记录层的头部,构成完整的记录报文段,最后调用UDPsocket接口,发送给另一方。

加密过程是只对记录层的载荷(即上层消息,此协议中被加密的消息是finished消息和应用数据两种)进行加密,所以接收方在收到记录消息后,首先要做的也是判断记录消息是否被发送方加密,若是,则应先解密才能读取出明文数据以进行后面的处理。

2.DTLS

### DTLS协议在RS485USB通信中的安全性实现 #### 背景介绍 RS-485是一种广泛应用于工业自动化领域的串行通信标准,其设计初衷并未考虑现代网络安全需求。因此,在涉及敏感数据传输的应用场景下,需引入额外的安全机制来保护通信链路免受窃听、篡改或重放攻击的影响。DTLS(Datagram Transport Layer Security)作为TLS的扩展版本,专为无连接的数据报传输提供安全支持,能够有效增强基于UDP或其他不可靠传输层协议的通信安全性。 尽管RS-485本身并不直接运行于IP网络之上,但在某些应用场景中,可以通过网关设备将其转换至TCP/IP栈下的Modbus TCP协议[^1],或者通过USB转接模块映射到主机操作系统内的虚拟端口上。此时,为了保障整个通信路径上的信息安全,可以采用DTLS协议对原始消息进行加密封装后再传递给目标节点。 #### 安全性实现方案 以下是利用DTLS协议提升RS-485与USB通信信道安全性的具体方法: 1. **硬件架构调整** 需要在现有的物理介质两端部署具备嵌入式计算能力的小型控制器单元(MCU),这些微处理器应预装有支持DTLS功能的操作环境以及必要的驱动程序库文件。例如,可以选择ARM Cortex-M系列单片机配合mbed TLS开源项目完成初始化配置工作。 2. **握手过程优化** 由于传统RS-485总线通常只允许半双工操作模式,所以在实际应用过程中可能会遇到因频繁切换发送/接收状态而导致延迟增加的问题。对此可采取如下措施缓解影响: - 减少不必要的重新协商次数; - 缓存已验证过的证书副本以便快速恢复会话; - 如果条件允许的话,则尝试升级基础设施至全双工兼容规格的产品型号上去。 3. **密钥管理策略** 对于大规模分布式系统而言,妥善保管私钥材料显得尤为重要。建议遵循以下原则制定相应计划: - 使用强随机数生成算法创建初始种子值; - 建立周期性轮换制度以防长期暴露风险累积; - 实施严格的访问权限分级控制体系防止未授权人员接触核心资产; 4. **性能评估考量因素** 当然也要注意到加解密运算必然带来一定开销成本,所以必须综合权衡各方面指标找到最佳平衡点。比如针对低功耗物联网终端来说可能更倾向于选择轻量级密码套件组合而非追求极致强度等级设置。 ```c #include <stdio.h> #include "mbedtls/dtls_srtp.h" int main(void){ mbedtls_ssl_context ssl; mbedtls_x509_crt cacert; /* 初始化SSL上下文 */ mbedtls_ssl_init(&ssl); mbedtls_x509_crt_init(&cacert); /* 加载CA根证书 */ if( ( ret = mbedtls_x509_crt_parse_file( &cacert, "ca.crt" ) ) != 0 ){ printf(" failed\n ! mbedtls_x509_crt_parse returned %d\n", ret ); goto exit; } /* 设置默认参数并启动客户端角色 */ if((ret=mbedtls_ssl_setup(&ssl,&conf))!=0){ perror("Error setting up SSL context"); return -1; } } ``` 上述代码片段展示了如何借助MBED-TLS库函数构建基本框架用于处理基于DTLS协议的安全关联建立流程的一部分逻辑实现细节。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值