芯片外接加密芯片什么原理?
之前做的产品被破解了(内部有绑定了ID加密,但是被破解了)。现在客户要加密,准备使用加密芯片,但是我一直搞不明白原理。
1,比如说重要数据放到加密芯片里面,我把单片机破解了,知道了读取方式,不就可以读取出来重要数据了。为什么还要用加密芯片多此一举?
2,难道是把关键代码放到加密芯片里面,然后读取出来程序放到ram里面运行?即使这样的话,我把单片机破解了,按照一样的方式运行不也可以了。(难道是这样必须配一个加密芯片?) 我觉得是重要代码放到加密芯片中,直接在加密芯片中运行,返回的只是运行的结果,这样应该无解吧 现在高端一点的加密芯片,里面可以放程序的,就是把一部分函数放到这个加密芯片里面去运行。
好比你要做个什么计算,你就把数据给它,然后它把结果给你。
这样就算你的单片机被破解了,因为程序不完整,别人也没用。除非他们能把加密芯片也破解了。
不过这种很贵,可能比你单片机还贵 攻防是对立的,得先知道对方怎么破解,能才更好的防破解。
简单的唯一ID保护,破解后在空闲位置写入正确的UID,同时把读UID的指令改为读这个位置内容,即完成了破解,加个全Flash校验即可防这种方法。
破解是找防护的薄弱点,不管加解密算法多复杂,只要能定位到关键点,比如找到最终的if,就完成了破解。
加密芯片,如果是有eeprom的,可以把校准参数等存里面,只有hash算法的加密芯片,一般是网络鉴权用,单片机用只有hash的如果鉴权过程不合理容易被破解。加密芯片是一芯片一密钥,不要图省事都用同一密钥。 带显示器了吗,触摸屏,再不济数码管也行。
某个组合键按下之后,显示你们公司电话号码或者专利号。
也是今后维权一个方法。 加密芯片就是能随机生成一个种子,加密芯片会把这个种子和加密过的密文一起发给你,主mcu同样根据这个种子进行运算,结果和密文一致,程序继续运行,不一致直接死循环,总体思路都是这样的,量产的话,就是你得把私钥批量烧入加密芯片。 我现在觉得esp32这种,虽然存储全部在外部flash的,但是它可以整片福来许加密,这种方式挺好的,甚至有时候还嫌他加密太强了,芯片已经搞废过好几个了 Doding 发表于 2023-12-27 11:28
攻防是对立的,得先知道对方怎么破解,能才更好的防破解。
简单的唯一ID保护,破解后在空闲位置写入正确的U ...
(引用自4楼)
全Flash校验是指啥 三年模拟 发表于 2023-12-27 12:26
加密芯片就是能随机生成一个种子,加密芯片会把这个种子和加密过的密文一起发给你,主mcu同样根据这个种子 ...
(引用自6楼)
你这样人家把最后判断语句取个反不就破解了么 ds28e01 美信的加密芯片 lonny_chen 发表于 2023-12-27 18:02
全Flash校验是指啥
(引用自8楼)
Flash整体做hash,包括没用到空的部分,hash结果保存,程序启动时校验这个结果是否正确,就知道程序有没有被改过。 yyts 发表于 2023-12-27 14:03
我现在觉得esp32这种,虽然存储全部在外部flash的,但是它可以整片福来许加密,这种方式挺好的,甚至有时候 ...
(引用自7楼)
ESP32的加密原理是什么? Doding 发表于 2023-12-27 19:41
Flash整体做hash,包括没用到空的部分,hash结果保存,程序启动时校验这个结果是否正确,就知道程序有没 ...
(引用自11楼)
那反汇编,跳过检验就绕过去了? zhanyanqiang 发表于 2023-12-27 21:31
那反汇编,跳过检验就绕过去了?
(引用自13楼)
都反汇编了,啥加密方法都能绕过去,电脑软件那么复杂,不照样被破解,除非把一段关键程序放到加密芯片里执行 zhanyanqiang 发表于 2023-12-27 21:31
那反汇编,跳过检验就绕过去了?
(引用自13楼)
增加反汇编难度,比如hash和正常功能共用函数,判断出错误不马上出错,正常运行一段时间随机出错,让破解的人难找到特征,如果对方所有汇编代码都分析一遍,说明你这个程序价值太高了,加密芯片成本就不足为提了,请用加密芯片保护。 SUPER_CRJ 发表于 2023-12-27 21:25
ESP32的加密原理是什么?
(引用自12楼)
ESP32内部没有flash,所以程序是存储在外部flash的,存储在外部flash中的数据和程序,可以采用XTS-AES加密,密钥自动生成,并存储在芯片内部的eFuse 熔丝位中,软件不可读取,由硬件从flash中读取数据时,自动解密。比如flash坏了,你换一片flash,不好意思,程序直接起不来,因为esp32按之前的密钥,肯定无法正常读取新flash中的数据,哪怕你重新烧程序也不知,因为你不知道,也无法读取eFuse 中的密钥,无法生成一个使用相同解密加密的程序,再存回flash中。 yyts 发表于 2023-12-27 22:40
ESP32内部没有flash,所以程序是存储在外部flash的,存储在外部flash中的数据和程序,可以采用XTS-AE ...
(引用自16楼)
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里面的ID? SUPER_CRJ 发表于 2023-12-28 00:08
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里 ...
(引用自17楼)
“flash数据采用XTS-AES加密,密钥自动生成,并存储在芯片内部的eFuse 熔丝位中”,比芯片的id,更难破解,因为芯片id,是软件可以访问读取到的,这个是软件(程序)读取不到的,而且整个解密的过程是由硬件来完成的。 SUPER_CRJ 发表于 2023-12-28 00:08
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里 ...
(引用自17楼)
这样可行,但只能用于这颗Mcu,换一颗就不行了, SUPER_CRJ 发表于 2023-12-28 00:08
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里 ...
(引用自17楼)
我也觉得是这样,除非flash id也参与加密运算 yyts 发表于 2023-12-28 00:16
“flash数据采用XTS-AES加密,密钥自动生成,并存储在芯片内部的eFuse 熔丝位中”,比芯片的id,更难破解 ...
(引用自18楼)
那代码里写flash操作会自动加密吗? tang_qianfeng 发表于 2023-12-28 07:37
那代码里写flash操作会自动加密吗?
(引用自21楼)
会。ʕ⊝ᴥ⊝ʔ modbus 发表于 2023-12-27 22:12
都反汇编了,啥加密方法都能绕过去,电脑软件那么复杂,不照样被破解,除非把一段关键程序放到加密芯片里 ...
(引用自14楼)
人家唯一ID破解了,就是做过反汇编了,所以这种方式和唯一ID加密,其实没啥区别。 yyts 发表于 2023-12-28 08:59
会。ʕ⊝ᴥ⊝ʔ
(引用自22楼)
那有明文,有密文,又是对称加密,不是可以推出密钥了么 ycheng2004 发表于 2023-12-28 07:32
这样可行,但只能用于这颗Mcu,换一颗就不行了,
(引用自19楼)
有道理,这样也就不能批量复制。 tang_qianfeng 发表于 2023-12-28 10:29
那有明文,有密文,又是对称加密,不是可以推出密钥了么
(引用自24楼)
你是说给客户一份明文的程序,再让用户从flash芯片上读取一份密文,然后给客户推出密钥吗?{:lol:} tang_qianfeng 发表于 2023-12-28 10:29
那有明文,有密文,又是对称加密,不是可以推出密钥了么
(引用自24楼)
没有明文,flash数据线上只有密文,随机生成的一芯片一密钥,密钥无法读写。 Doding 发表于 2023-12-28 11:05
没有明文,flash数据线上只有密文,随机生成的一芯片一密钥,密钥无法读写。 ...
(引用自27楼)
重新换个flash,通过mcu来把代码烧录到新的flash里,不就有明文和密文了么? tang_qianfeng 发表于 2023-12-28 12:44
重新换个flash,通过mcu来把代码烧录到新的flash里,不就有明文和密文了么?
(引用自28楼)
下载口调试口已经禁用掉了,重新换个flash,Mcu都起不来。 tang_qianfeng 发表于 2023-12-28 12:44
重新换个flash,通过mcu来把代码烧录到新的flash里,不就有明文和密文了么?
(引用自28楼)
ESP32有2种加密方式,一种是开发模式,另一种是发布模式。
开发模式可以重新烧录,发布模式无法重新烧录程序,只能通过OTA升级。
如果发布模式的flash坏了,需要连MCU一起换。 SUPER_CRJ 发表于 2023-12-28 00:08
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里 ...
(引用自17楼)
没有KEY,你拿到一堆密文也没有用。
页:
[1]