OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5391|回复: 5

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

[复制链接]

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12570
金钱
12570
注册时间
2015-11-5
在线时间
2150 小时
发表于 2016-12-28 11:20:08 | 显示全部楼层 |阅读模式
本帖最后由 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, 下载次数: 1574)
拿来长岛冰茶换我半晚安睡
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

276

帖子

0

精华

高级会员

Rank: 4

积分
697
金钱
697
注册时间
2014-6-20
在线时间
146 小时
发表于 2016-12-28 11:47:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-12-28 16:30:24 | 显示全部楼层
厉害,顶顶顶
回复 支持 反对

使用道具 举报

0

主题

103

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2016-3-30
在线时间
67 小时
发表于 2016-12-28 19:52:25 | 显示全部楼层
厉害了,学习一下,或许后面会有用呢。
回复 支持 反对

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12570
金钱
12570
注册时间
2015-11-5
在线时间
2150 小时
 楼主| 发表于 2016-12-29 08:43:49 | 显示全部楼层
代码当中密码部分有个错误
111624u9awkahjaoemw1jb.png
数组元素应该是17个而不是16个,我忽略了字符串的结束符'\0'了

拿来长岛冰茶换我半晚安睡
回复 支持 反对

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12570
金钱
12570
注册时间
2015-11-5
在线时间
2150 小时
 楼主| 发表于 2017-1-11 08:43:40 | 显示全部楼层
各位大神,完整版的通信加密实验做好了,链接在此:http://www.openedv.com/thread-92354-1-1.html
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 18:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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