amobbs.com 阿莫电子技术论坛

标题: 像SWD这种公开协议的烧录过程加密是否有意义 [打印本页]

作者: weavr    时间: 2023-8-19 11:51
标题: 像SWD这种公开协议的烧录过程加密是否有意义
看到有的脱机烧录器有次数限制,还有用平台直接发布程序给用户自己烧录,为了防止程序泄露,通常在传输过程中进行加密,防止从SWD线上读取有效内容。

但是如果破解者有能力从SWD线上读取并分晰协议得到代码,那么根据SWD的公开协议,模拟一个目标芯片,不就可以得到最终代码了吗?不管过程怎么加密,最后都要把最终的代码写到FLASH的。
作者: yuyu87    时间: 2023-8-19 11:55
只是再增加一点难度而已
作者: ibmx311    时间: 2023-8-19 11:55
没见过中国造的稳压电源或者万用表有安捷伦那么详细的器件清单,电路图和工作原理说明,中国的电子工程师整天不是想抄别人的就是想防止被抄
作者: modbus    时间: 2023-8-19 12:31
有这能力的人都去干专职破解者了,开盖、去UID不是挣的更多
作者: weavr    时间: 2023-8-19 13:07
modbus 发表于 2023-8-19 12:31
有这能力的人都去干专职破解者了,开盖、去UID不是挣的更多
(引用自4楼)

开盖门槛高了,写个目标协议是纯软件,而且一个模拟器就可以通用所有的加密传输。

我只是想印证一下我的看法,这些加密传输真的就这么容易破吗?那些脱机烧录器应该不会这么简单吧,是不是我没理解其中的原理。

像STC的加密传输,我认为是有比较高的门槛的,首先下载协议是不公开的,无法模拟目标,加密传输是先在芯片里写了解密密码,但是SWD协议是完全公开的,加密和解密都是实时进行的,这样模拟目标就能得到最终写入Flash的内容,应该是这样吧?
作者: liandao    时间: 2023-8-19 13:21
weavr 发表于 2023-8-19 13:07
开盖门槛高了,写个目标协议是纯软件,而且一个模拟器就可以通用所有的加密传输。

我只是想印证一下我的 ...

(引用自5楼)

你可以得到每一次写入flash的完整内容,但如果每次写入的内容都是不一样,且写入这片子的内容复制到另外一片却不能工作。这样你所做的就意义不大了吧?
每次烧写,都是读出芯片唯一id,然后依据id现在上位机对原始烧写文件进行加密处理,从而得到一个id关联的镜像用于烧写,在运行时也时不时检查id,这你怎么破?
作者: weavr    时间: 2023-8-19 13:42
liandao 发表于 2023-8-19 13:21
你可以得到每一次写入flash的完整内容,但如果每次写入的内容都是不一样,且写入这片子的内容复制到另外 ...
(引用自6楼)

我觉得这是两个加密:

一个是目标程序本身的加密,比如对比唯一ID等手段让FLASH的内容复制到另一片也不能工作。

另一个是烧录器在传输中的加密,防止在烧录过程中代码泄露,目前讨论的是这种加密传输的情况,烧录器应该不会修改程序功能加上验证ID,只是在传输过程通过唯一ID加密传输的代码,最终写入FLASH的代码是解密过的,得到这份代码应该相当于开盖拿到的代码,至于第一种在程序中有加密功能的代码,即使是开盖拿到,也是一样工作不了,需要二次反汇编解密等,这个先不讨论。
作者: LL00    时间: 2023-8-19 14:04
weavr 发表于 2023-8-19 13:42
我觉得这是两个加密:

一个是目标程序本身的加密,比如对比唯一ID等手段让FLASH的内容复制到另一片也不 ...
(引用自7楼)

如果先把烧录代码传到SRAM里,通过SRAM里的程序来下载,那么SWD就可以传输加密的数据了
作者: weavr    时间: 2023-8-19 14:33
LL00 发表于 2023-8-19 14:04
如果先把烧录代码传到SRAM里,通过SRAM里的程序来下载,那么SWD就可以传输加密的数据了 ...
(引用自8楼)

烧录器与SRAM之间无论怎么加密,最终SRAM需要解出代码写到FLASH中,如果模拟一个目标芯片,是不是就能得到最终写到FLASH中的代码,能力有限,不知模拟目标芯片难度怎么样。或者说让目标芯片成为一个不能读保护的芯片,这样烧录完就能直接从flash中读出代码,烧写时的加密等于被绕过了。
作者: LL00    时间: 2023-8-19 14:47
weavr 发表于 2023-8-19 14:33
烧录器与SRAM之间无论怎么加密,最终SRAM需要解出代码写到FLASH中,如果模拟一个目标芯片,是不是就能得 ...
(引用自9楼)

加密和解密都使用待烧录芯片的UID
作者: tang_qianfeng    时间: 2023-8-19 14:48
如果sram只有1k,而扇区最小是4k,这个怎么操作啊,分几步做吗?
作者: modbus    时间: 2023-8-19 15:04
weavr 发表于 2023-8-19 13:07
开盖门槛高了,写个目标协议是纯软件,而且一个模拟器就可以通用所有的加密传输。

我只是想印证一下我的 ...
(引用自5楼)

像STM32F103开盖也才2000元
作者: tang_qianfeng    时间: 2023-8-19 16:06
modbus 发表于 2023-8-19 15:04
像STM32F103开盖也才2000元
(引用自12楼)

任何gd 国明 小华 灵动的都能开盖吗?
作者: t3486784401    时间: 2023-8-19 17:29
SWD 相当于传输层,加密设计思路之一,就是在不安全的传输层上(例如可被监听)实现点对点安全的传输(即使监听也是密文)。

参考下 13.56M 射频卡和读卡器的传输过程:
a. 射频卡靠近上电;
b. 若干次握手后,射频卡、读卡器均拥有了对方的 AES 公钥;
c. 每次传输,均使用对方公钥进行 AES 加密,然后接收方使用自己的私钥进行解密。

观察这个过程,除非你能在交换秘钥阶段截获秘钥,否则就算监听也全是密文。
作者: weavr    时间: 2023-8-20 06:38
t3486784401 发表于 2023-8-19 17:29
SWD 相当于传输层,加密设计思路之一,就是在不安全的传输层上(例如可被监听)实现点对点安全的传输(即使 ...
(引用自14楼)

加密在传输过程中我相信是很难解的,我本来认为高手能用软件模拟单片机,烧录器让我做什么我就做什么,让我写进FLASH的内容就是解密过的。不过后来想想要软件模拟单片机难度应该比较大,所以加密传输还是比较有用的。
作者: ycheng2004    时间: 2023-8-20 10:02
t3486784401 发表于 2023-8-19 17:29
SWD 相当于传输层,加密设计思路之一,就是在不安全的传输层上(例如可被监听)实现点对点安全的传输(即使 ...
(引用自14楼)

秘钥/私钥不交换吧,
作者: modbus    时间: 2023-8-20 10:42
tang_qianfeng 发表于 2023-8-19 16:06
任何gd 国明 小华 灵动的都能开盖吗?
(引用自13楼)

没有单片机是开不了盖的
作者: t3486784401    时间: 2023-8-20 13:13
ycheng2004 发表于 2023-8-20 10:02
秘钥/私钥不交换吧,
(引用自16楼)

交换公钥,具体过程参考 RF522 手册,记得是有三次握手来回。

并且交换的过程本身也是加密的。
作者: t3486784401    时间: 2023-8-20 13:17
weavr 发表于 2023-8-20 06:38
加密在传输过程中我相信是很难解的,我本来认为高手能用软件模拟单片机,烧录器让我做什么我就做什么,让 ...
(引用自15楼)

所谓加密,就类似于:

同一片芯片,每次烧录时传输的密文都不同(但烧录结果经过解密后是一致的)。
这样一来即使能监听+捕获某一次的传输,并不代表下次用相同的传输就可以正常,
因为单片机端已经改变了密文序列的初值,需要编程器端同步响应。而如何同步响应,就是秘钥本身
作者: ycheng2004    时间: 2023-8-20 16:55
t3486784401 发表于 2023-8-20 13:13
交换公钥,具体过程参考 RF522 手册,记得是有三次握手来回。

并且交换的过程本身也是加密的。 ...

(引用自18楼)

公钥就是公开的,知道公钥也不能把密文转明文吧,
作者: t3486784401    时间: 2023-8-20 21:01
ycheng2004 发表于 2023-8-20 16:55
公钥就是公开的,知道公钥也不能把密文转明文吧,
(引用自20楼)

公钥和秘钥是成对的,一般用对方公钥加密发出,然后对方必须用私钥才能解开。




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4