利用随机数发生器与TEA加密方式加密通信数据

2019-07-20 17:26发布

本帖最后由 FreeRTOS 于 2017-1-11 08:43 编辑

一直想模仿IC卡授权的方式做一个通信加密,今天花了点时间研究了TEA加密,4个字形容——短小精悍
目前只做了整个通信加密的一小部分,算是开了个头,呵呵!

先以一个常用例子来简单阐述小灯为何想做通信加密:
1、PC端的软件与MCU的通信方式使用串口
2、通过PC端的软件来获取/设置MCU的参数,为防止本机的数据泄露,用户必须设一个用户密码,
    PC端的软件访问MCU时需要用户密码,若MCU发现密码不正确,便拒绝PC端的数据获取请求
3、考虑到会有极少部分用户会忘记密码,因此厂家留了一个超级密码,超级密码可以重设用户密码
4、当用户忘记密码时,厂家会通过远程方式帮用户重设用户密码,如果用户想要趁机偷取厂家的
    超级密码,只需抓取串口透传的数据即可分析出来,用户可以利用该超级密码获取或修改其他
    机子的所有数据
--------------                    ---------------
|            |                    |             |
|            |                    |             |
|    PC     |       串口      |    MCU    |
|            | ------------------ |             |
|            |                    |             |
--------------                    ---------------

为了解决上述超级密码泄露的问题,在PC访问MCU时可以采用加密的方式,并且不能采用
简单的加密(普通的加减异或),为此引入QQ使用的TEA加密:

1、PC端软件发送操作请求给MCU
2、MCU利用随机数发生器产生一段随机序列(明文)
3、MCU采用TEA加密方式对明文进行加密产生一段密文(明文 + 用户密码 = 密文)
4、MCU发送密文给PC端软件
5、PC端软件利用用户密码采用TEA解密方式对密文进行解密,还原出明文,并发送给MCU
6、MCU在100ms内等待PC端软件解密出来的明文,并与步骤2随机产生的明文做比较
    若比较正确则认为PC端软件输入了正确的密码
7、整个通信过程都是随机序列,用户密码并无泄露,实现了安全的密码验证授权!


目前小灯只完成了基础加解密部分,剩余的功能需要上位机配合,只能有时间再弄了
测试板采用@阿波罗STM32F7
2.PNG

密码1和密码2只相差一位,但解密结果完全不同,也就说明了只能采用正确的密码才能完全正确解析
当然你也可以采用其他加密方式而不使用TEA
1.PNG
利用随机数加密通信数据.rar (1.04 MB, 下载次数: 1549) 2016-12-28 11:19 上传 点击文件名下载附件


各位大神,完整版的通信加密实验做好了,链接在此:http://www.openedv.com/thread-92354-1-1.html



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
313668972
1楼-- · 2019-07-20 22:40
顶一下再说
taizonglai
2楼-- · 2019-07-21 03:55
厉害,顶顶顶
高级放牛娃
3楼-- · 2019-07-21 04:20
 精彩回答 2  元偷偷看……
FreeRTOS
4楼-- · 2019-07-21 07:47
代码当中密码部分有个错误
111624u9awkahjaoemw1jb.png
数组元素应该是17个而不是16个,我忽略了字符串的结束符''了

FreeRTOS
5楼-- · 2019-07-21 11:53
各位大神,完整版的通信加密实验做好了,链接在此:http://www.openedv.com/thread-92354-1-1.html

一周热门 更多>