搜索
bottom↓
回复: 38

ESP8266 代码如何加密?

[复制链接]

出5入10汤圆

发表于 2018-8-22 15:25:49 | 显示全部楼层 |阅读模式
目前用ESP8266 开发了一款物联网方向的产品,主要是实现手机app 通过云服务器与产品进行数据通信;ESP8266本身是外挂FLASH,如何可以做到即使别人把Flash代码完全拷贝出来,也不用担心被别人直接拿来用~跪求~

出0入0汤圆

发表于 2018-8-22 15:38:13 | 显示全部楼层
还有一个内置 1M Flash 的 ESP8285 可以用,源码不用改可以直接用,编译、下载需要改下配置

不过同样有疑虑,首先 Flash 里的内容是否能读出不清楚,能读出的话那提供升级固件时还是涉及加密问题

出0入14汤圆

发表于 2018-8-22 15:38:14 | 显示全部楼层
外挂加密芯片....

出5入10汤圆

 楼主| 发表于 2018-8-22 15:42:02 | 显示全部楼层
wudicgi 发表于 2018-8-22 15:38
还有一个内置 1M Flash 的 ESP8285 可以用,源码不用改可以直接用,编译、下载需要改下配置

不过同样有疑 ...

是的,想通过MAC加密,还没有想出一个相对安全的方案~

出5入10汤圆

 楼主| 发表于 2018-8-22 15:42:35 | 显示全部楼层
isakura 发表于 2018-8-22 15:38
外挂加密芯片....

前辈 可否推荐一款~ 不知道成本咋样~

出0入0汤圆

发表于 2018-8-22 15:52:26 | 显示全部楼层
MAC加密,云端随机验证,不增加成本。

出5入10汤圆

 楼主| 发表于 2018-8-22 15:56:33 | 显示全部楼层
caoxuedong 发表于 2018-8-22 15:52
MAC加密,云端随机验证,不增加成本。

可否简单描述一下,不是很理解啊~

出0入0汤圆

发表于 2018-8-22 16:08:11 | 显示全部楼层
根据MAC地址和芯片序列号加密产生一个字符串序列,随机GET或POST到自己的云端服务器,服务器用相同算法返回一个字符串序列,在ESP验证。

出0入0汤圆

发表于 2018-8-22 16:13:03 | 显示全部楼层
其实感觉就一个关键问题,Flash 中的固件能被读出拿到,就能被修改,那所有检查手段理论上都能被跳过

出0入0汤圆

发表于 2018-8-22 16:46:46 | 显示全部楼层
推荐加密IC  ATSHA204a,性价比不错,我们可以提供代烧录,样品等  TEL:13530108906

出0入0汤圆

发表于 2018-8-22 16:59:58 | 显示全部楼层
根本不用加;如果有一定的价值,即使加密也会被解密,只是时间问题;高手太多。

出0入0汤圆

发表于 2018-8-22 18:20:03 | 显示全部楼层
1、外挂加密片,成本相对高点
2、现在一般的FLASH都有OTP,自己 在OTP里面写数据,就可以加密了。

出0入0汤圆

发表于 2018-8-22 18:44:31 | 显示全部楼层
897152237 发表于 2018-8-22 16:46
推荐加密IC  ATSHA204a,性价比不错,我们可以提供代烧录,样品等  TEL:13530108906
...

我看过这个 IC 的 datasheet 和应用笔记,最后感觉还是避免不了我 9 楼说的问题

银行卡、公交卡、网银盾之类的设备之所以能保证安全性,还是因为固件、密钥值存储在 IC 内部时外部获取不到

出10入0汤圆

发表于 2018-8-22 18:56:37 | 显示全部楼层
有的FLASH有UID, 再配合一下Flash的OTP, 应该可以搞点事情...是不?

出0入0汤圆

发表于 2018-8-22 19:26:46 | 显示全部楼层
wudicgi 发表于 2018-8-22 16:13
其实感觉就一个关键问题,Flash 中的固件能被读出拿到,就能被修改,那所有检查手段理论上都能被跳过
...

正解。。。。。。

出0入0汤圆

发表于 2018-8-22 19:27:40 | 显示全部楼层
wudicgi 发表于 2018-8-22 18:44
我看过这个 IC 的 datasheet 和应用笔记,最后感觉还是避免不了我 9 楼说的问题

银行卡、公交卡、网银盾 ...

简单的是否判断肯定容易破解,不管什么方式,但是一般我们会建议客户将运算结果与某些特殊动作关联,整个系统还是正常运行,只是无法达到预期效果。

出5入10汤圆

 楼主| 发表于 2018-8-23 08:21:20 | 显示全部楼层
wudicgi 发表于 2018-8-22 16:13
其实感觉就一个关键问题,Flash 中的固件能被读出拿到,就能被修改,那所有检查手段理论上都能被跳过
...

能这样修改的,我感觉是大牛,我主要是目的就是避免那些NC山寨的,直接把代码拿来用~

出0入0汤圆

发表于 2018-8-23 11:16:41 | 显示全部楼层
因为是外置FLASH,所以限制读出程序没可能,最好的办法就是程序内随机点多点验证,多一些验证算法和方式尽量避免被轻易跟踪破解。

出0入17汤圆

发表于 2018-8-23 11:33:30 | 显示全部楼层
esp8266出厂时,获取mac地址, 将MAC地址在服务器上注册,然后卖给用户。

或者固件里可以通过串口输出mac地址,让用户记录下来,找你们注册。

非注册的MAC,不能使用。 即便用户改mac地址,也只能使用在已知的MAC上, 服务上做限制,同一个MAC,只有一个设备可用。

出0入17汤圆

发表于 2018-8-23 11:36:30 | 显示全部楼层
阿里就是卖设备的序列号,来赚钱, 管你用什么模块。

出0入8汤圆

发表于 2018-8-23 11:39:36 | 显示全部楼层
都联网的,  19楼的办法才是最好的。

出5入10汤圆

 楼主| 发表于 2018-8-23 12:16:58 | 显示全部楼层
wicy001 发表于 2018-8-23 11:33
esp8266出厂时,获取mac地址, 将MAC地址在服务器上注册,然后卖给用户。

或者固件里可以通过串口输出mac ...

是的,之前想过这个问题,就是担心如果批量,这个效率如何~



出0入0汤圆

发表于 2018-8-23 13:00:53 | 显示全部楼层
涵潇舒雅 发表于 2018-8-23 08:21
能这样修改的,我感觉是大牛,我主要是目的就是避免那些NC山寨的,直接把代码拿来用~ ...

也不一定是大牛,现在都有提供这些服务的公司或个人

出0入17汤圆

发表于 2018-8-23 13:24:46 | 显示全部楼层
涵潇舒雅 发表于 2018-8-23 12:16
是的,之前想过这个问题,就是担心如果批量,这个效率如何~

多加了步骤,会影响效率,那就需要想提高效率办法,比如做个工具专门读MAC

还有一个方法,就是用自己产生的序列号(跟MAC无关),下载程序的时候,一起将序列号烧录进去。 因为每个序列号不同,也影响烧录效率,人工烧录还容易出错,需要作一个专门的烧录器。

出0入0汤圆

发表于 2018-8-23 16:52:52 | 显示全部楼层
esp8266即然可以上互联网,可以利用云服务器来进行授权加密,前提是esp8266中程序一启动就检授权,没有授权的,不能正常使用
1、新刷固件模块,第一次启动,在连上路由器后即向云服务器上报模块id等硬件信息,并保存在云服务器数据库中,这个是产品ID的原始库
2、在云服务器中对产品id数据记录,有一个授权标志字段,由人工进行标识,是否授权。
3、模块第二次启动,上报id数据的同时,与云服务器数据库中的id对比,如果云服务器数据库中已存在ID,且已授权,就可以获取到密钥(使用可逆加密算法),esp8266获取密钥后进行解密,
将解密数据与esp8266的硬件id一起进行可逆加密,即然是可逆,要多密加几次(不能外泄,就算有高手能破出至少增加破解难度),将加密数据保存到模块上用于授权校验。
3、第三次启动,即已写好授权,启动就会校验授权,如果验证通过就可以正常使用了。
4、如果克隆了,因为esp8266每个模块的ID不同,校验自然通不过。
以上是出厂前做的,除人工在数据库里标识授权外(那也是分分钟的事情),都可以自动完成(多启动几次)。
你也可以让模块每次启动时上网校验授权,如果发现数据里有没有授权记录的ID,排除自家模块,那就是你的产品有盗版了。

出0入0汤圆

发表于 2018-8-23 17:45:00 来自手机 | 显示全部楼层
8266没有啥特别好的保护方式。。esp32可以开代码加密和security boot

出0入4汤圆

发表于 2018-8-23 17:48:55 | 显示全部楼层
都上云的设备不需要考虑加密吧,云端验证就可以了吧。  

出0入0汤圆

发表于 2018-11-16 12:46:12 | 显示全部楼层
这类 要在数据包上做文章,如  APP--[加密数据]--wifi--TX        RX--设备---wifi---UART---MCU--[数据解密]  反过来一样

出0入0汤圆

发表于 2018-11-16 17:01:32 | 显示全部楼层
服务器上加密,别人解密后不能用,把你服务器黑掉,怎么解?

出0入0汤圆

发表于 2018-11-16 18:25:27 | 显示全部楼层
云端自己做的话,在发货前就将MAC地址批量输入到服务器,后期联网验证就好了。

出0入0汤圆

发表于 2020-3-18 16:50:03 | 显示全部楼层
如果你一次能下单70k的esp8266的话,可以找原厂定制芯片里的特殊标记的。不过,无论怎么加密,理论上只要能拷贝到flash内容都可以解开的,只是时间问题。lx106的指令并不是不可逆向。

出0入4汤圆

发表于 2020-3-23 19:09:57 | 显示全部楼层
没有用的,让他去解,解开了,把价格放到最低,我看他怎么做,

出0入0汤圆

发表于 2020-4-3 23:32:02 | 显示全部楼层
这东西感觉没啥必要弄的那么麻烦,反而增加了成本,如果真的有那么贵重的话肯定会有人去做的,解密都不需要,直接按照你的方案来做就行

出0入0汤圆

发表于 2020-4-3 23:41:57 | 显示全部楼层
参考:https://www.cnblogs.com/nnhy/p/device_auth.html
物联网智能硬件设备身份验证机制
设备身份验证有以下目标:
1,别人的设备不能接入我们的云平台
2,我们的设备,不能接入别人的云平台
3,考虑到设备要批量生产,云平台先生成设备编码再写入每个设备的方法,非常不现实!

那么,标准的设备身份验证应该是:
1,设备上电联网后,需要一个激活过程
2,设备向云平台申请激活,包括 厂商、生产批次、生产密码、芯片唯一编码 等信息
3,云平台判断并通过激活,根据诸多信息生成全局唯一的设备编码,如果是重复激活,需要根据芯片唯一编码查到上一次分配给该设备的设备编码
4,云平台告知硬件设备激活成功,并下发设备编码以及设备密码,设备永久保存设备编码以及设备密码
5,设备多次激活,密码必须改变,编码不变
6,设备激活以后,每一次连接云平台,必须提交设备编码,以及使用设备密码加密一段随机数,不要提交设备密码,以防被拦截窃取

出0入0汤圆

发表于 2020-4-3 23:50:08 | 显示全部楼层
记得ISSI有自带加密的外部SPI dataflash. 贵点,但是简单

出20入0汤圆

发表于 2020-4-9 23:41:49 | 显示全部楼层
ATSHA204a +1

出0入0汤圆

发表于 2020-4-10 08:00:00 来自手机 | 显示全部楼层
wudicgi 发表于 2018-8-22 16:13
其实感觉就一个关键问题,Flash 中的固件能被读出拿到,就能被修改,那所有检查手段理论上都能被跳过
...

能修改,但是你能保证全部都改对?隔段时间发作的也能让你丟客户

出0入0汤圆

发表于 2020-4-10 08:55:41 | 显示全部楼层

http://blog.sina.com.cn/u/5205992080

出0入0汤圆

发表于 2020-4-10 13:10:57 | 显示全部楼层
连着你自己的云端,加密干啥
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 16:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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