找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 752|回复: 27
打印 上一主题 下一主题
收起左侧

关于MCU间通信防监听问题

  [复制链接]
跳转到指定楼层
楼主
ID:74687 发表于 2024-1-4 18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在准备做个设备认证的东西,在每个机械设备上装个带有身份验证的PCB板,然后主控板向该PCB板发送指令,返回加密的认证信息,主控芯片进行解密,看身份验证信息是否一致。

但是,这里有个问题,如果通过串口或者485发送这些信息,很容易被人监听被截取,别人也就可以写个程序对验证的密文进行伪造。

大神们,有没有方法可以做到,防止串口或485通信防监听的办法?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:807591 发表于 2024-1-5 08:52 | 只看该作者
没有绝对的加密,只有更多的麻烦,要么你试试量子纠缠?
回复

使用道具 举报

板凳
ID:485350 发表于 2024-1-5 09:05 | 只看该作者
坐等大神思路
回复

使用道具 举报

地板
ID:883242 发表于 2024-1-5 09:08 | 只看该作者
加随机数就行了,这样每次你主控板发送的密文都不一样,就算被人监听,PCB板也只知道几亿亿次随机密文中的一种回复,如何仿造???
回复

使用道具 举报

5#
ID:277550 发表于 2024-1-5 10:21 | 只看该作者

光是加密不够的,做到同1条指令、都是不同的数据,基本可以了。
回复

使用道具 举报

6#
ID:844772 发表于 2024-1-5 10:30 | 只看该作者
有密码机的,就是比较贵,通常都是软件上想办法。简单的就做个哈希,也很难破解的。顺便还可以不断改改串口的波特率。
回复

使用道具 举报

7#
ID:485350 发表于 2024-1-5 10:34 | 只看该作者
主机发:
    TEA加密(消息ID + Buf[0] + Buf[1] + Buf[2] + Buf[3] + 随机数 + 随机数 + 随机数 + 随机数+ 校验)

从机回发:
    TEA加密(主机消息ID + Buf[0] + Buf[1] + Buf[2] + Buf[3] +  随机数 + 随机数 + 随机数 + 随机数+ 校验)



这样通信怎样??有没大神知道一番
回复

使用道具 举报

8#
ID:485350 发表于 2024-1-5 10:44 | 只看该作者

主机发:
    以9600波特率发送
    TEA加密(消息ID + 随机波特率 + Buf[1] + Buf[2] + Buf[3] + 随机数 + 随机数 + 随机数 + 随机数+ 校验)
   波特率设置为随机波特率等待从机回发(某段时间内无法接收到从机回发数据,再次返回9600波特率重新发送)
从机回发:
    设置波特率为主机随机波特率
    TEA加密(主机消息ID + Buf[0] + Buf[1] + Buf[2] + Buf[3] +  随机数 + 随机数 + 随机数 + 随机数+ 校验)
    设置波特率为9600等待主机重新更新波特率

   这样又怎样??


这样通信怎样??有没大神知道一番
回复

使用道具 举报

9#
ID:883242 发表于 2024-1-5 10:52 | 只看该作者
18680365301 发表于 2024-1-5 10:34
主机发:
    TEA加密(消息ID + Buf[0] + Buf[1] + Buf[2] + Buf[3] + 随机数 + 随机数 + 随机数 + 随机数+ ...

如果每个数据帧都只有8 bytes那么这么做就对了,如果是很长的连续数据没必要用这么多随机数,8个字节插入1个就行。
回复

使用道具 举报

10#
ID:458247 发表于 2024-1-5 16:09 | 只看该作者
Hephaestus 发表于 2024-1-5 10:52
如果每个数据帧都只有8 bytes那么这么做就对了,如果是很长的连续数据没必要用这么多随机数,8个字节插入 ...

可以生成个uint32_t类型随机数RNG[0]、RNG[1]、RNG[2]、RNG[3],假如你的消息有5字节,[ID]、[buf1]、[buf2]、[buf3]、[buf4]、[crc0]、[crc1]、[crc2]、[crc3]。可以把[ID]^RNG[0]、[buf1]^RNG[1]、[buf2]^RNG[2]、[buf3]^RNG[3]、[buf4]^RNG[0],然后在[buf4]后面添加RNG[0]、RNG[1]、RNG[2]、RNG[3],计算crc32填入[crc0]、[crc1]、[crc2]、[crc3],收到报文后逆向异或,这样两个相同功能的报文,可以做到没一个字节是一样的,让人摸不着头脑
回复

使用道具 举报

11#
ID:883242 发表于 2024-1-5 16:34 | 只看该作者
yzw846562238 发表于 2024-1-5 16:09
可以生成个uint32_t类型随机数RNG[0]、RNG[1]、RNG[2]、RNG[3],假如你的消息有5字节,、、、、、[crc0] ...

你搜下TEA、XTEA、XXTEA、salsa20、ChaCha20、Poly1305……
回复

使用道具 举报

12#
ID:771630 发表于 2024-1-5 16:57 | 只看该作者
滚动码 + AES加密 + 加盐就可以了
回复

使用道具 举报

13#
ID:74687 发表于 2024-1-6 16:22 来自手机 | 只看该作者
感谢各位老铁的热心解答。
回复

使用道具 举报

14#
ID:74687 发表于 2024-1-6 16:26 来自手机 | 只看该作者
感谢各位老铁的热心解答。其实我的问题主要是防别人截获我的通信密文,但是这个是没办法阻止的。 签名认证有一套自己的算法HMAC,这些算法肯定比一般的算法强,防监听办法就是加个时间戳验证,即使别人截获了你的密文,发过来一样通不过验证,因为你的密文是过时的。
回复

使用道具 举报

15#
ID:883242 发表于 2024-1-7 08:52 | 只看该作者
HMAC基础算法还是DES、AES什么的,既然你有这么大的单片机资源能算规模这么大的算法,我就不说什么了。
回复

使用道具 举报

16#
ID:476415 发表于 2024-1-7 12:11 | 只看该作者
用较长位数的伪随机数生成器,将你的数据作为初始数据送进去,运行特定次后得到的数据作为通信数据,这样,乱码通信,解密会有点障碍。
回复

使用道具 举报

17#
ID:476415 发表于 2024-1-7 12:13 | 只看该作者
Hephaestus 发表于 2024-1-7 08:52
HMAC基础算法还是DES、AES什么的,既然你有这么大的单片机资源能算规模这么大的算法,我就不说什么了。

9494,晃了一眼HMac,感觉很高端的样子。哈哈哈
回复

使用道具 举报

18#
ID:74687 发表于 2024-1-7 17:21 | 只看该作者
Hephaestus 发表于 2024-1-7 08:52
HMAC基础算法还是DES、AES什么的,既然你有这么大的单片机资源能算规模这么大的算法,我就不说什么了。

不稿HMAC了,只是用时间戳加DES加密,再添加几个随机数以及把数组位置变换一下。
回复

使用道具 举报

19#
ID:74687 发表于 2024-1-7 17:37 | 只看该作者
yzw846562238 发表于 2024-1-5 16:09
可以生成个uint32_t类型随机数RNG[0]、RNG[1]、RNG[2]、RNG[3],假如你的消息有5字节,、、、、、[crc0] ...

我现在的问题不是要解密,问题是防止别人伪造你发过的报文,如果发个你前面发过一模一样的报文,能不能骗过上位机?
回复

使用道具 举报

20#
ID:883242 发表于 2024-1-8 00:43 | 只看该作者
zyftank 发表于 2024-1-7 17:37
我现在的问题不是要解密,问题是防止别人伪造你发过的报文,如果发个你前面发过一模一样的报文,能不能骗 ...

随机数是上位机发的,下位机发前面一模一样的报文,怎么可能骗过上位机?

原来我们说了半天,你根本就不看。
回复

使用道具 举报

21#
ID:74687 发表于 2024-1-8 08:50 | 只看该作者
Hephaestus 发表于 2024-1-8 00:43
随机数是上位机发的,下位机发前面一模一样的报文,怎么可能骗过上位机?

原来我们说了半天,你根本就 ...

你这种也可以试出来,就是把上位机发的随机数改成固定,从下位机返回数据破解,破解有点难度。
回复

使用道具 举报

22#
ID:420836 发表于 2024-1-8 08:50 | 只看该作者
可以监控RS232或RS485通信的串口连接,一旦连接未通过验证,通信将被关闭。
回复

使用道具 举报

23#
ID:1065084 发表于 2024-1-8 09:40 | 只看该作者
硬件方面:接口错乱,不使用标准的串口和485接口,毕竟是内联电路板,完全可以自定义接口,比如单总线或者多跟信号线,没点技术还真分析不出来。 协议方面:协议可以搞个比如变频异步,一般人就分析不出来了,简单一点也可以搞个4b-8b 将一个字节数据拆分到两个字节中,两字节中总共有8b的随机码。 加密方面:网上加密方法有很多现成的,弄个AES128,一般的32位处理器没啥压力。
回复

使用道具 举报

24#
ID:883242 发表于 2024-1-9 23:10 | 只看该作者
zyftank 发表于 2024-1-8 08:50
你这种也可以试出来,就是把上位机发的随机数改成固定,从下位机返回数据破解,破解有点难度。

上位机都已经破了,你还加密个蛋啊!
回复

使用道具 举报

25#
ID:1108822 发表于 2024-1-10 18:03 | 只看该作者
为了防止串口或485通信被监听,可以考虑以下几种方法:

硬件加密:使用带有加密功能的串口或485通信模块。这些模块可以在数据传输时进行硬件加密,以保护数据的安全性。
自定义协议:设计一个自定义的通信协议,该协议在传输数据时对数据进行加密,并采用特殊的格式或指令来标识身份验证信息。这样,即使数据被截取,也很难被伪造。
加密算法:采用强大的加密算法,如AES、RSA等,对数据进行加密。这样可以在一定程度上防止数据被破解。
定期更换密钥:为了防止密钥被破解,可以定期更换密钥,使得截取的数据在一段时间内无效。
物理隔离:通过物理方式隔离串口或485通信线路,如使用光缆或特殊的线路保护装置,以防止数据被截取。
软件加密:在软件层面进行加密处理,如对传输的数据进行加密后再传输,并在接收端进行解密。这样可以增加数据的安全性。
校验和:在数据传输时添加校验和,以检测数据是否被篡改。如果校验和不匹配,则可以重新传输数据或进行身份验证。
回复

使用道具 举报

26#
ID:74687 发表于 2024-1-11 15:02 | 只看该作者
Hephaestus 发表于 2024-1-9 23:10
上位机都已经破了,你还加密个蛋啊!

呵呵,既然你接三根线就能收到下位机的通信数据,你把RX和TX对调一下,不就能收到上位机发送的数据?
回复

使用道具 举报

27#
ID:883242 发表于 2024-1-11 17:15 | 只看该作者
zyftank 发表于 2024-1-11 15:02
呵呵,既然你接三根线就能收到下位机的通信数据,你把RX和TX对调一下,不就能收到上位机发送的数据?

能收到又怎么样???
回复

使用道具 举报

28#
ID:74687 发表于 2024-1-12 10:19 | 只看该作者
Hephaestus 发表于 2024-1-11 17:15
能收到又怎么样???

串口通信,信道是根本没有保密可言,都是在外裸奔。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表