打印

STM32**有多难?

[复制链接]
楼主: zhxi
手机看帖
扫描二维码
随时随地手机跟帖
101
guet_new_man| | 2014-6-20 15:25 | 只看该作者 回帖奖励 |倒序浏览
香水城 发表于 2014-6-20 13:08
**我已经不记得了。。。

既然是引用3楼的话,那去问问3楼的ID吧。

多谢,帖子中间有这篇**“STM32F103RB的BootLoader软件安全设计方案”,通过它那种方式去**,对于一般的产品,只需要找两个产品,就可以把bootloader与app取出来。如果bootloader设计好一点,就不行了。

还有一个问题,对于STM32,JTAG fuse熔断后,剖开芯片的外壳,是否像其他一些普通的片子一样很轻易就能把熔丝接上?这方面,ST是否有介绍?

使用特权

评论回复
102
香水城| | 2014-6-20 16:23 | 只看该作者
额。。。。。。

基本上做不到再“搭上”:the JTAG fuse is done physically at design level and the device will be read protected permanently

顺便问下,那个“普通的片子”能够“轻易就把熔丝接上”啊?

使用特权

评论回复
103
guet_new_man| | 2014-6-21 00:04 | 只看该作者
香水城 发表于 2014-6-20 16:23
额。。。。。。

基本上做不到再“搭上”:the JTAG fuse is done physically at design level and the dev ...

:lol  没真正见过,看这篇帖子里其他人讲的,哈哈。。

使用特权

评论回复
104
ninjalp| | 2014-8-27 12:09 | 只看该作者
jar1866 发表于 2014-6-14 19:51
菜鸟说一句:目前有个非对称rsa加密方式,要想运行此软件必须先输入密文,采用cpu id作为要加密的字符串,  ...

想法不错,但是我可以明确告诉你,RSA512位**仅需一个月,RSA1024私匙运算一次一分钟。以CPUID作为运算字串是常用的方式,但是STM32的ID并不是真ID,**公司有手段修改。
反汇编并没有想象那么难,修改转跳和算法运算方式给专业的反汇编人员不需一周即可**。
要善用STM32的备份寄存器和侵入监测机制。

使用特权

评论回复
105
STARM| | 2014-8-27 12:55 | 只看该作者
>>但是STM32的ID并不是真ID,**公司有手段修改。

强大!!!

使用特权

评论回复
106
kseeker| | 2014-8-28 11:52 | 只看该作者
runningwzf 发表于 2014-6-16 08:52
这不用去想象,这早就是现实了,我们目前项目已经正在使用这个方法:
在应用程序中预留通信接口和命令, ...

2、如果单片机发现密钥区里面的128位密钥不全部为1,则意味这密钥已经被写入,则使用CPU的ID和软件版本号计算密钥,如果密钥不对,则意味着正在被人**,此时通过IAP的方法将程序的后一半和密钥区域擦除,CPU重启;

应对1:就是这里,把程序拷出来,跟踪运行,记下整个流程,发现程序操作FLASH,说明检查已经完成,往前回溯,八成之前某个跳转改掉就**好了。
应对2:跟踪程序,发现读取cpu id,仔细检查之后的程序,应该很快就能找到对比的语句,改掉,**完成。
应对3:在存放cpu id的内存位置设断点,发现这里读取id了,就改一下这里的程序,把原始程序对应的id作为结果返回,骗过之后的检查程序就好了。
其实吧,因为cpu id地址是固定的,没特殊处理的话,直接在程序里搜就能搜到这个地址,查找一下相关访问语句,可能连跟踪都用不到。

顺带告诉大家:实际上CPU 的ID就是私钥,而软件版本的作用就是选择加密算法和公钥。也许有人会认为这种加密方法很复杂,但是实际上很简单,我们在ST的全系列CPU上已经实现了。而且有一个非常实用的方法,使用base64,不同的软件版本对应不同的编码区域,这样会让**你产品的人付出更大的代价

针对这一点,其实复杂的算法一点意义都没有,**的都是直接绕过算法,管你怎么加密,他都等你程序脱壳完毕才用。另外,标准加密算法代码特征十分明显,专业的一看就知道怎么做的,你的所有密钥放在哪里一清二楚,都很容易就能提出来和修改。

使用特权

评论回复
107
kseeker| | 2014-8-28 11:55 | 只看该作者
现在id都能随意修改了,没太大意义了。备份区域和侵入监测机制是唯一可靠的了,可这个东西又容易丢失,权衡利弊吧。

使用特权

评论回复
108
biechedan| | 2014-8-30 00:04 | 只看该作者

使用特权

评论回复
109
houjiakai| | 2014-8-30 00:05 | 只看该作者

使用特权

评论回复
110
houjiakai| | 2014-8-30 00:08 | 只看该作者
谁有办法?

使用特权

评论回复
111
houjiakai| | 2014-8-30 00:09 | 只看该作者

使用特权

评论回复
112
houjiakai| | 2014-8-30 00:11 | 只看该作者

使用特权

评论回复
113
houjiakai| | 2014-8-30 00:17 | 只看该作者
这个有什么号办法呢?

使用特权

评论回复
114
houjiakai| | 2014-8-30 00:18 | 只看该作者
求赐教的

使用特权

评论回复
115
runningwzf| | 2014-9-5 22:18 | 只看该作者
kseeker 发表于 2014-8-28 11:52
2、如果单片机发现密钥区里面的128位密钥不全部为1,则意味这密钥已经被写入,则使用CPU的ID和软件版本号 ...

我升级一次,他旧的**一次
有这功夫和费用,请人重新开发不就完了?

使用特权

评论回复
116
crazybee| | 2014-9-6 11:08 | 只看该作者
runningwzf 发表于 2014-9-5 22:18
我升级一次,他旧的**一次
有这功夫和费用,请人重新开发不就完了?

在你眼里,啥产品就那么容易开发出来?  

升级的话,如果是在线升级的,你的产品升级了,CLONE也跟着升级,哈哈。

使用特权

评论回复
117
pattywu| | 2014-9-6 11:40 | 只看该作者
本帖最后由 pattywu 于 2014-9-6 11:44 编辑

好的加密方法,主要从增加**的成本方面着手。

硬件ID总是要利用的,但不能简单利用一下就行了。
比如:
1、检测ID相关算法的地方,不要放在程序开始执行的地方,要隔相关长时间才检测(比如5天),这样就能有效增加**人员的**时间。
2、防**的地方,要有多处,每处的处理情况要不一样。比如,某个地方的处理,可以让某些功能失效,而另一处的处理,可能是使整个系统崩溃等(在带OS的系统中,创建一个线程堆栈的大小,比线程最小运行所需的内存小,或者,在线程中,调用一个局部变量所需内存很大的函数,就一定能使系统崩溃)。

使用特权

评论回复
118
runningwzf| | 2014-9-7 11:27 | 只看该作者
crazybee 发表于 2014-9-6 11:08
在你眼里,啥产品就那么容易开发出来?  

升级的话,如果是在线升级的,你的产品升级了,CLONE也跟着升 ...

这个和山寨手机不一样,山寨手机一次,出货量可以做到很大,卖完了城市卖农村,卖完了亚洲卖非洲,所以这样算下来,**的成本实际很低
但是所有的产品都可以这样做到吗?不见得吧?
还有很多其他的问题,比如你山寨出来的产品出现了bug,你怎么帮客户修正,总不能找被山寨的产生商谈吧?解决不了bug就只能被客户退货,赔上安装调试成本不说,搞不好还得扛法律责任
另外,客户的个性化要求怎么满足?


曾经在广州就招标过几家这样公司的产品,出现bug,他假装是客户套人家的解决方法,结果产品送过去就被人家查询到电子ID不对,被人家踢了回来,我们这边因为出现了bug不要,而且还要扛法律责任,最后他只好关门跑路

使用特权

评论回复
119
runningwzf| | 2014-9-7 11:29 | 只看该作者
pattywu 发表于 2014-9-6 11:40
好的加密方法,主要从增加**的成本方面着手。

硬件ID总是要利用的,但不能简单利用一下就行了。

是的,世界上应该还不存在什么**不了的东西,只是**难度的大小和成本。作为开发人员需要做的就是尽量增加**的难度,让**的人望而却步

使用特权

评论回复
120
runningwzf| | 2014-9-7 11:30 | 只看该作者
创业初期山寨一下未尝不可,但是要发展,总是靠**、山寨,肯定不行的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则