一种嵌入式设备串口加密协议

本文介绍了一种针对嵌入式设备串口通讯的加密方案,包括完整的数据格式定义及加密步骤说明,确保数据传输的安全性和完整性。

嵌入式设备串口通讯一般都会明文通讯,但在某些应用场合我们也有加密需求, 以下为一种加密方式的建议.

上位机(主机)定义为Master,下位机(从机)定义为Slaver

通讯协议建议: 

完整数据格式: 帧头Header+数据长度Length+数据内容Body+数据校验CRC

Header(1Byte):  M-->S ( 0x55 ) , S-->M( 0xaa )

Length(1Byte):  除了帧头和长度字节,后面数据的长度

Body(N Byte): 内容长度为 Length -帧头长-数据长-CRC长

CRC(1Byte):从帧头到的数据的校验,选择方式有:CRC8,代数和,异或

数据内容建议:

0. 帧头,数据,和校验字节的长度,可自行根据项目通讯内容字节数量自己修改,一般在2byte以内.

1.数据可采用c语言的结构体的小端数据对齐

2.数据组成,oper+sn+playload+check 

3.check为保证数据加密后的完整性校验

4.sn为通讯数据序列,每帧数据自增1,用于防重放攻击和数据统计.

  方案B:上位机发送的sn,需要基于下位机反馈的sn加1; 下位机上报的sn则是按收到的上位机的sn

  这种设计的好处是可以同时检验RX和TX通讯是否有超时间.双方是需要判断一下sn是否在不断增  加就可以知道是否有超时情况.

5.当slaver发给master的sn少于当前自身的sn,则认为该指令无效,可以选择性的回复错误代码.

数据加密步骤:

1.当建立通讯之间,Slaver向Master请求通讯密钥key1,和随机初始序列sn1.用于后续通讯,以防止重放偷听.

2.master和slave代码内部约定一个固定的密钥key2.

3.每帧数据加密/解密方式采用对称加密. 通讯数据=原始数据^key1^key2.

4.body加密部分为oper后面的内容(不包含oper字节).

---<待续>

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值