SUPER_CRJ 发表于 2023-12-27 11:03:38

芯片外接加密芯片什么原理?

之前做的产品被破解了(内部有绑定了ID加密,但是被破解了)。
现在客户要加密,准备使用加密芯片,但是我一直搞不明白原理。
1,比如说重要数据放到加密芯片里面,我把单片机破解了,知道了读取方式,不就可以读取出来重要数据了。为什么还要用加密芯片多此一举?
2,难道是把关键代码放到加密芯片里面,然后读取出来程序放到ram里面运行?即使这样的话,我把单片机破解了,按照一样的方式运行不也可以了。(难道是这样必须配一个加密芯片?)

tang_qianfeng 发表于 2023-12-27 11:07:05

我觉得是重要代码放到加密芯片中,直接在加密芯片中运行,返回的只是运行的结果,这样应该无解吧

honami520 发表于 2023-12-27 11:25:12

现在高端一点的加密芯片,里面可以放程序的,就是把一部分函数放到这个加密芯片里面去运行。
好比你要做个什么计算,你就把数据给它,然后它把结果给你。
这样就算你的单片机被破解了,因为程序不完整,别人也没用。除非他们能把加密芯片也破解了。
不过这种很贵,可能比你单片机还贵

Doding 发表于 2023-12-27 11:28:12

攻防是对立的,得先知道对方怎么破解,能才更好的防破解。
简单的唯一ID保护,破解后在空闲位置写入正确的UID,同时把读UID的指令改为读这个位置内容,即完成了破解,加个全Flash校验即可防这种方法。
破解是找防护的薄弱点,不管加解密算法多复杂,只要能定位到关键点,比如找到最终的if,就完成了破解。
加密芯片,如果是有eeprom的,可以把校准参数等存里面,只有hash算法的加密芯片,一般是网络鉴权用,单片机用只有hash的如果鉴权过程不合理容易被破解。加密芯片是一芯片一密钥,不要图省事都用同一密钥。

lb0857 发表于 2023-12-27 11:58:42

带显示器了吗,触摸屏,再不济数码管也行。
某个组合键按下之后,显示你们公司电话号码或者专利号。
也是今后维权一个方法。

三年模拟 发表于 2023-12-27 12:26:06

加密芯片就是能随机生成一个种子,加密芯片会把这个种子和加密过的密文一起发给你,主mcu同样根据这个种子进行运算,结果和密文一致,程序继续运行,不一致直接死循环,总体思路都是这样的,量产的话,就是你得把私钥批量烧入加密芯片。

yyts 发表于 2023-12-27 14:03:10

我现在觉得esp32这种,虽然存储全部在外部flash的,但是它可以整片福来许加密,这种方式挺好的,甚至有时候还嫌他加密太强了,芯片已经搞废过好几个了

lonny_chen 发表于 2023-12-27 18:02:33

Doding 发表于 2023-12-27 11:28
攻防是对立的,得先知道对方怎么破解,能才更好的防破解。
简单的唯一ID保护,破解后在空闲位置写入正确的U ...
(引用自4楼)

全Flash校验是指啥

tang_qianfeng 发表于 2023-12-27 18:24:59

三年模拟 发表于 2023-12-27 12:26
加密芯片就是能随机生成一个种子,加密芯片会把这个种子和加密过的密文一起发给你,主mcu同样根据这个种子 ...
(引用自6楼)

你这样人家把最后判断语句取个反不就破解了么

xml2028 发表于 2023-12-27 19:16:32

ds28e01 美信的加密芯片

Doding 发表于 2023-12-27 19:41:31

lonny_chen 发表于 2023-12-27 18:02
全Flash校验是指啥
(引用自8楼)

Flash整体做hash,包括没用到空的部分,hash结果保存,程序启动时校验这个结果是否正确,就知道程序有没有被改过。

SUPER_CRJ 发表于 2023-12-27 21:25:41

yyts 发表于 2023-12-27 14:03
我现在觉得esp32这种,虽然存储全部在外部flash的,但是它可以整片福来许加密,这种方式挺好的,甚至有时候 ...
(引用自7楼)

ESP32的加密原理是什么?

zhanyanqiang 发表于 2023-12-27 21:31:10

Doding 发表于 2023-12-27 19:41
Flash整体做hash,包括没用到空的部分,hash结果保存,程序启动时校验这个结果是否正确,就知道程序有没 ...
(引用自11楼)

那反汇编,跳过检验就绕过去了?

modbus 发表于 2023-12-27 22:12:46

zhanyanqiang 发表于 2023-12-27 21:31
那反汇编,跳过检验就绕过去了?
(引用自13楼)

都反汇编了,啥加密方法都能绕过去,电脑软件那么复杂,不照样被破解,除非把一段关键程序放到加密芯片里执行

Doding 发表于 2023-12-27 22:25:06

zhanyanqiang 发表于 2023-12-27 21:31
那反汇编,跳过检验就绕过去了?
(引用自13楼)

增加反汇编难度,比如hash和正常功能共用函数,判断出错误不马上出错,正常运行一段时间随机出错,让破解的人难找到特征,如果对方所有汇编代码都分析一遍,说明你这个程序价值太高了,加密芯片成本就不足为提了,请用加密芯片保护。

yyts 发表于 2023-12-27 22:40:11

SUPER_CRJ 发表于 2023-12-27 21:25
ESP32的加密原理是什么?
(引用自12楼)





ESP32内部没有flash,所以程序是存储在外部flash的,存储在外部flash中的数据和程序,可以采用XTS-AES加密,密钥自动生成,并存储在芯片内部的eFuse 熔丝位中,软件不可读取,由硬件从flash中读取数据时,自动解密。比如flash坏了,你换一片flash,不好意思,程序直接起不来,因为esp32按之前的密钥,肯定无法正常读取新flash中的数据,哪怕你重新烧程序也不知,因为你不知道,也无法读取eFuse 中的密钥,无法生成一个使用相同解密加密的程序,再存回flash中。

SUPER_CRJ 发表于 2023-12-28 00:08:56

yyts 发表于 2023-12-27 22:40
ESP32内部没有flash,所以程序是存储在外部flash的,存储在外部flash中的数据和程序,可以采用XTS-AE ...
(引用自16楼)

我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里面的ID?

yyts 发表于 2023-12-28 00:16:20

SUPER_CRJ 发表于 2023-12-28 00:08
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里 ...
(引用自17楼)

“flash数据采用XTS-AES加密,密钥自动生成,并存储在芯片内部的eFuse 熔丝位中”,比芯片的id,更难破解,因为芯片id,是软件可以访问读取到的,这个是软件(程序)读取不到的,而且整个解密的过程是由硬件来完成的。

ycheng2004 发表于 2023-12-28 07:32:22

SUPER_CRJ 发表于 2023-12-28 00:08
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里 ...
(引用自17楼)

这样可行,但只能用于这颗Mcu,换一颗就不行了,

tang_qianfeng 发表于 2023-12-28 07:35:02

SUPER_CRJ 发表于 2023-12-28 00:08
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里 ...
(引用自17楼)

我也觉得是这样,除非flash id也参与加密运算

tang_qianfeng 发表于 2023-12-28 07:37:11

yyts 发表于 2023-12-28 00:16
“flash数据采用XTS-AES加密,密钥自动生成,并存储在芯片内部的eFuse 熔丝位中”,比芯片的id,更难破解 ...
(引用自18楼)

那代码里写flash操作会自动加密吗?

yyts 发表于 2023-12-28 08:59:44

tang_qianfeng 发表于 2023-12-28 07:37
那代码里写flash操作会自动加密吗?
(引用自21楼)

会。ʕ⊝ᴥ⊝ʔ

fcm32 发表于 2023-12-28 09:11:29

modbus 发表于 2023-12-27 22:12
都反汇编了,啥加密方法都能绕过去,电脑软件那么复杂,不照样被破解,除非把一段关键程序放到加密芯片里 ...
(引用自14楼)

人家唯一ID破解了,就是做过反汇编了,所以这种方式和唯一ID加密,其实没啥区别。

tang_qianfeng 发表于 2023-12-28 10:29:17

yyts 发表于 2023-12-28 08:59
会。ʕ⊝ᴥ⊝ʔ
(引用自22楼)

那有明文,有密文,又是对称加密,不是可以推出密钥了么

SUPER_CRJ 发表于 2023-12-28 10:30:03

ycheng2004 发表于 2023-12-28 07:32
这样可行,但只能用于这颗Mcu,换一颗就不行了,
(引用自19楼)

有道理,这样也就不能批量复制。

yyts 发表于 2023-12-28 10:34:34

tang_qianfeng 发表于 2023-12-28 10:29
那有明文,有密文,又是对称加密,不是可以推出密钥了么
(引用自24楼)

你是说给客户一份明文的程序,再让用户从flash芯片上读取一份密文,然后给客户推出密钥吗?{:lol:}

Doding 发表于 2023-12-28 11:05:41

tang_qianfeng 发表于 2023-12-28 10:29
那有明文,有密文,又是对称加密,不是可以推出密钥了么
(引用自24楼)

没有明文,flash数据线上只有密文,随机生成的一芯片一密钥,密钥无法读写。

tang_qianfeng 发表于 2023-12-28 12:44:43

Doding 发表于 2023-12-28 11:05
没有明文,flash数据线上只有密文,随机生成的一芯片一密钥,密钥无法读写。 ...
(引用自27楼)

重新换个flash,通过mcu来把代码烧录到新的flash里,不就有明文和密文了么?

yyts 发表于 2023-12-28 13:02:58

tang_qianfeng 发表于 2023-12-28 12:44
重新换个flash,通过mcu来把代码烧录到新的flash里,不就有明文和密文了么?
(引用自28楼)

下载口调试口已经禁用掉了,重新换个flash,Mcu都起不来。

Doding 发表于 2023-12-28 14:18:16

tang_qianfeng 发表于 2023-12-28 12:44
重新换个flash,通过mcu来把代码烧录到新的flash里,不就有明文和密文了么?
(引用自28楼)

ESP32有2种加密方式,一种是开发模式,另一种是发布模式。
开发模式可以重新烧录,发布模式无法重新烧录程序,只能通过OTA升级。
如果发布模式的flash坏了,需要连MCU一起换。

嘿嘿嘿1235 发表于 2023-12-28 18:43:10

SUPER_CRJ 发表于 2023-12-28 00:08
我把FLASH里面数据全部读取出来,放到新的FLASH里面,数据完全一模一样,为什么不行?难道是根据FLASH里 ...
(引用自17楼)

没有KEY,你拿到一堆密文也没有用。
页: [1]
查看完整版本: 芯片外接加密芯片什么原理?