像SWD这种公开协议的烧录过程加密是否有意义
看到有的脱机烧录器有次数限制,还有用平台直接发布程序给用户自己烧录,为了防止程序泄露,通常在传输过程中进行加密,防止从SWD线上读取有效内容。但是如果破解者有能力从SWD线上读取并分晰协议得到代码,那么根据SWD的公开协议,模拟一个目标芯片,不就可以得到最终代码了吗?不管过程怎么加密,最后都要把最终的代码写到FLASH的。 只是再增加一点难度而已 没见过中国造的稳压电源或者万用表有安捷伦那么详细的器件清单,电路图和工作原理说明,中国的电子工程师整天不是想抄别人的就是想防止被抄 有这能力的人都去干专职破解者了,开盖、去UID不是挣的更多 modbus 发表于 2023-8-19 12:31
有这能力的人都去干专职破解者了,开盖、去UID不是挣的更多
(引用自4楼)
开盖门槛高了,写个目标协议是纯软件,而且一个模拟器就可以通用所有的加密传输。
我只是想印证一下我的看法,这些加密传输真的就这么容易破吗?那些脱机烧录器应该不会这么简单吧,是不是我没理解其中的原理。
像STC的加密传输,我认为是有比较高的门槛的,首先下载协议是不公开的,无法模拟目标,加密传输是先在芯片里写了解密密码,但是SWD协议是完全公开的,加密和解密都是实时进行的,这样模拟目标就能得到最终写入Flash的内容,应该是这样吧? weavr 发表于 2023-8-19 13:07
开盖门槛高了,写个目标协议是纯软件,而且一个模拟器就可以通用所有的加密传输。
我只是想印证一下我的 ...
(引用自5楼)
你可以得到每一次写入flash的完整内容,但如果每次写入的内容都是不一样,且写入这片子的内容复制到另外一片却不能工作。这样你所做的就意义不大了吧?
每次烧写,都是读出芯片唯一id,然后依据id现在上位机对原始烧写文件进行加密处理,从而得到一个id关联的镜像用于烧写,在运行时也时不时检查id,这你怎么破? liandao 发表于 2023-8-19 13:21
你可以得到每一次写入flash的完整内容,但如果每次写入的内容都是不一样,且写入这片子的内容复制到另外 ...
(引用自6楼)
我觉得这是两个加密:
一个是目标程序本身的加密,比如对比唯一ID等手段让FLASH的内容复制到另一片也不能工作。
另一个是烧录器在传输中的加密,防止在烧录过程中代码泄露,目前讨论的是这种加密传输的情况,烧录器应该不会修改程序功能加上验证ID,只是在传输过程通过唯一ID加密传输的代码,最终写入FLASH的代码是解密过的,得到这份代码应该相当于开盖拿到的代码,至于第一种在程序中有加密功能的代码,即使是开盖拿到,也是一样工作不了,需要二次反汇编解密等,这个先不讨论。 weavr 发表于 2023-8-19 13:42
我觉得这是两个加密:
一个是目标程序本身的加密,比如对比唯一ID等手段让FLASH的内容复制到另一片也不 ...
(引用自7楼)
如果先把烧录代码传到SRAM里,通过SRAM里的程序来下载,那么SWD就可以传输加密的数据了 LL00 发表于 2023-8-19 14:04
如果先把烧录代码传到SRAM里,通过SRAM里的程序来下载,那么SWD就可以传输加密的数据了 ...
(引用自8楼)
烧录器与SRAM之间无论怎么加密,最终SRAM需要解出代码写到FLASH中,如果模拟一个目标芯片,是不是就能得到最终写到FLASH中的代码,能力有限,不知模拟目标芯片难度怎么样。或者说让目标芯片成为一个不能读保护的芯片,这样烧录完就能直接从flash中读出代码,烧写时的加密等于被绕过了。 weavr 发表于 2023-8-19 14:33
烧录器与SRAM之间无论怎么加密,最终SRAM需要解出代码写到FLASH中,如果模拟一个目标芯片,是不是就能得 ...
(引用自9楼)
加密和解密都使用待烧录芯片的UID 如果sram只有1k,而扇区最小是4k,这个怎么操作啊,分几步做吗? weavr 发表于 2023-8-19 13:07
开盖门槛高了,写个目标协议是纯软件,而且一个模拟器就可以通用所有的加密传输。
我只是想印证一下我的 ...
(引用自5楼)
像STM32F103开盖也才2000元 modbus 发表于 2023-8-19 15:04
像STM32F103开盖也才2000元
(引用自12楼)
任何gd 国明 小华 灵动的都能开盖吗? SWD 相当于传输层,加密设计思路之一,就是在不安全的传输层上(例如可被监听)实现点对点安全的传输(即使监听也是密文)。
参考下 13.56M 射频卡和读卡器的传输过程:
a. 射频卡靠近上电;
b. 若干次握手后,射频卡、读卡器均拥有了对方的 AES 公钥;
c. 每次传输,均使用对方公钥进行 AES 加密,然后接收方使用自己的私钥进行解密。
观察这个过程,除非你能在交换秘钥阶段截获秘钥,否则就算监听也全是密文。 t3486784401 发表于 2023-8-19 17:29
SWD 相当于传输层,加密设计思路之一,就是在不安全的传输层上(例如可被监听)实现点对点安全的传输(即使 ...
(引用自14楼)
加密在传输过程中我相信是很难解的,我本来认为高手能用软件模拟单片机,烧录器让我做什么我就做什么,让我写进FLASH的内容就是解密过的。不过后来想想要软件模拟单片机难度应该比较大,所以加密传输还是比较有用的。 t3486784401 发表于 2023-8-19 17:29
SWD 相当于传输层,加密设计思路之一,就是在不安全的传输层上(例如可被监听)实现点对点安全的传输(即使 ...
(引用自14楼)
秘钥/私钥不交换吧, tang_qianfeng 发表于 2023-8-19 16:06
任何gd 国明 小华 灵动的都能开盖吗?
(引用自13楼)
没有单片机是开不了盖的 ycheng2004 发表于 2023-8-20 10:02
秘钥/私钥不交换吧,
(引用自16楼)
交换公钥,具体过程参考 RF522 手册,记得是有三次握手来回。
并且交换的过程本身也是加密的。 weavr 发表于 2023-8-20 06:38
加密在传输过程中我相信是很难解的,我本来认为高手能用软件模拟单片机,烧录器让我做什么我就做什么,让 ...
(引用自15楼)
所谓加密,就类似于:
同一片芯片,每次烧录时传输的密文都不同(但烧录结果经过解密后是一致的)。
这样一来即使能监听+捕获某一次的传输,并不代表下次用相同的传输就可以正常,
因为单片机端已经改变了密文序列的初值,需要编程器端同步响应。而如何同步响应,就是秘钥本身 t3486784401 发表于 2023-8-20 13:13
交换公钥,具体过程参考 RF522 手册,记得是有三次握手来回。
并且交换的过程本身也是加密的。 ...
(引用自18楼)
公钥就是公开的,知道公钥也不能把密文转明文吧, ycheng2004 发表于 2023-8-20 16:55
公钥就是公开的,知道公钥也不能把密文转明文吧,
(引用自20楼)
公钥和秘钥是成对的,一般用对方公钥加密发出,然后对方必须用私钥才能解开。
页:
[1]