找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 422|回复: 12
收起左侧

关于签名认证的一点思考

[复制链接]
ID:74687 发表于 2024-1-6 17:27 | 显示全部楼层 |阅读模式
最近客户又提了一个需求,这个需求不好搞,而且因为成本低廉,可能会卖不上一个好价格,但是可以绑上我的板子一起卖。所以费神费力地帮客户解决这个问题。想了好久,才把一些原理的东西理顺一点。

客户想将上中下位机各部件做成一个整体,想替换成别人的设备就不能正常工作,要我开发一个签名认证的设备。

因为我的板子处于中游,连接的是设备,客户的需求,是我的一个板子要识别8个左右的设备,我想,如果一个设备,搞个加密的EEPROM,嵌进设备里就可以了,但是一个芯片要带8个EEPROM,我好像搞不了。

那就换一个方案,用个SOP8的芯片,做个小板子嵌进设备里,通过串口与主板通信,当时想将认证信息加密后,发送给我板子的单片机,经解密比对后,判断设备是否是我客户生产的。因为是使用了串口通信,发送的数据都是可以被截取,别人也可以伪造一个一模一样的数据发送过来。

所以问题就卡在发送的这个数据是什么,如果是序列号,根本阻止不了别人伪造密文。在这个问题上困扰了很久,后来在研究HMAC算法的时候,有人介绍过可以使用时间戳,可以防止别人伪造我们加密的信息。终于解决了我的问题了,如果别人通过监听我的串口通信,截取的信息因为是加密的实时时间戳,等他写好程序,再发给我上位机的时候,我板子芯片就能轻松判断这是一个伪造的数据,因为他是一个过时的时间戳。

所以,签名认证中一个重要的内容,加密信息的选取最好是选时间戳,然后经过HMAC算法加密后,再发给验证芯片,经解密后再验证芯片实时时间戳进行比对,如果差太多,肯定是伪造的,注意这里比对的方法是两个时间戳相减的绝对值要小于一个范围,才符合要求。这个范围一般是通信及加、解密过程中的耗时。
回复

使用道具 举报

ID:883242 发表于 2024-1-6 19:33 | 显示全部楼层
最后不对头吧?时间戳小于某个值才算对,那么中间发生点什么意外,比如电缆接触不良你的设备不就挂了?
回复

使用道具 举报

ID:1059989 发表于 2024-1-7 08:22 | 显示全部楼层
可以这样:上位机发送一段原始数据给单片机,单片机对这个原始数据进行加密,形成密文,然后把密文传给上位机,上位机
回复

使用道具 举报

ID:1059989 发表于 2024-1-7 08:28 | 显示全部楼层
可以这样:
1. 上位机使用时间戳作为明文,发送明文数据给单片机。
2. 单片机对明文数据加密为密文,把密文发给上位机。
3. 上位机对明文加密为密文,和单片机发过来的密文比对是否一致。
因为时间戳是动态的,不是固定值,所以即使被截取到,也无法直接使用。除非破解了加密算法。
这样不用比对时间戳的差值,比较可靠。
还可以同时内置几种加密算法,每次通讯时随机选一种加密算法,在通讯协议里指明是哪种加密算法,双方用同一种加密算法就行。这样更安全,更难破解。
回复

使用道具 举报

ID:74687 发表于 2024-1-7 10:36 | 显示全部楼层
FrankJi 发表于 2024-1-7 08:22
可以这样:上位机发送一段原始数据给单片机,单片机对这个原始数据进行加密,形成密文,然后把密文传给上位 ...

密文传输,都是可以监听读取出来的,然后就可伪造一个一样的密文。
回复

使用道具 举报

ID:74687 发表于 2024-1-7 10:37 | 显示全部楼层
Hephaestus 发表于 2024-1-6 19:33
最后不对头吧?时间戳小于某个值才算对,那么中间发生点什么意外,比如电缆接触不良你的设备不就挂了?

这种挂了就要修电缆
回复

使用道具 举报

ID:1059989 发表于 2024-1-7 11:29 | 显示全部楼层
zyftank 发表于 2024-1-7 10:36
密文传输,都是可以监听读取出来的,然后就可伪造一个一样的密文。

之前回复时,没输完就发出去了。
上位机用时间戳做原始数据,发给单片机(可变换后发给单片机更安全),单片机加密后发给上位机,上位机也对时间戳加密为密文,检查和单片机发来的密文是否相同。因为时间戳是动态的,不是固定值,每次密文都不同,监听到也没用,除非破解加密算法。
回复

使用道具 举报

ID:476415 发表于 2024-1-7 12:08 | 显示全部楼层
好的点子。
1、两端的时间如何能保证统一?
2、防复制问题怎么解决:别人买一个你客户的设备,然后实时截获他们的认证阶段通信,然后再复刻到其它设备的认证阶段。
回复

使用道具 举报

ID:276663 发表于 2024-1-8 09:31 | 显示全部楼层
isyido 发表于 2024-1-7 12:08
好的点子。
1、两端的时间如何能保证统一?
2、防复制问题怎么解决:别人买一个你客户的设备,然后实时截 ...

1.时间应该是有一个提供参考时间就行了
2.认证贯穿整个使用过程,随机增加二次验证
回复

使用道具 举报

ID:123036 发表于 2024-1-8 09:55 | 显示全部楼层
PC软件有一万种破解方法
回复

使用道具 举报

ID:74687 发表于 2024-1-8 10:03 | 显示全部楼层
isyido 发表于 2024-1-7 12:08
好的点子。
1、两端的时间如何能保证统一?
2、防复制问题怎么解决:别人买一个你客户的设备,然后实时截 ...

1.两端使用一个时钟芯片实现时间戳同步。

2.复制的密文因为时间戳是固定,你不懂加密规则,不知道修改,这个时间就是死的,发送回来经解密后,与实时时间戳一对比就有很大差异,时间越长,差异越大。
回复

使用道具 举报

ID:74687 发表于 2024-1-8 10:07 | 显示全部楼层
FrankJi 发表于 2024-1-7 11:29
之前回复时,没输完就发出去了。
上位机用时间戳做原始数据,发给单片机(可变换后发给单片机更安全), ...

你的理解和我想的差不多,因为单片运算能力有限,我准备采用AES加密,然后对加密的密文调整顺序,并插入随机数,这样就更难破解了。
回复

使用道具 举报

ID:883242 发表于 2024-1-8 12:19 | 显示全部楼层
zyftank 发表于 2024-1-7 10:37
这种挂了就要修电缆

仔细想想你的认证逻辑,这时候修电缆已经来不及了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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