搜索
bottom↓
12
返回列表 发新帖
楼主: smset

只要单片机具有真正唯一ID,就可以让加密坚不可摧。

  [复制链接]

出0入0汤圆

发表于 2013-2-17 16:14:32 | 显示全部楼层
xwkm 发表于 2013-2-17 16:06
那你是用什么单片机来访问的?

我的存储芯片挂在FPGA上,是FPGA访问的,用20MHz时钟,我最前面的帖子意思是没法用单片机来模仿那个存储器的行为欺骗FPGA,因为单片机太慢了,跟不上FPGA操作的速度

出0入0汤圆

发表于 2013-2-17 17:14:50 | 显示全部楼层
xwkm 发表于 2013-2-17 16:07
问题就是基本上你找不出。
花指令&代码数据混着。要分开谈何容易?

你用汇编?和c混合?

db需要在汇编中。

如果你的inline 在c中,如何db?

出0入0汤圆

发表于 2013-2-17 17:32:50 | 显示全部楼层
outt60777 发表于 2013-2-17 17:14
你用汇编?和c混合?

db需要在汇编中。

无需db。只需要在函数中设定PROGMEM数组即可。
db伪指令我基本上不会用它。
而且我完全可以写这样的语句
goto resume
uchar PROGMEM x="12345678khdgjkshgjkgkj万致远";
resume:
*SP=&func >> 8;
*(SP+1)=&func & 0xFF;
return;
这个还算简单的。如果到51上去,那种不定长的指令集你根本分不清楚代码和数据。

出0入0汤圆

发表于 2013-2-17 18:52:07 | 显示全部楼层
xwkm 发表于 2013-2-17 17:32
无需db。只需要在函数中设定PROGMEM数组即可。
db伪指令我基本上不会用它。
而且我完全可以写这样的语句

花指令, 有分析能力的反编译器能分析出一部分. 剩下的就是人肉的活了.
如果这个mcu没有模拟器,反编译器也只是简单的从指定地址进行反编译, 花指令的变形又很多. 逆向起来还是挺麻烦的, 尤其是代码在比较多的时候.  

出0入0汤圆

发表于 2013-2-17 19:18:24 | 显示全部楼层
goodcode 发表于 2013-2-17 18:52
花指令, 有分析能力的反编译器能分析出一部分. 剩下的就是人肉的活了.
如果这个mcu没有模拟器,反编译器也 ...

没错。但是如果在51/X86那些不定长机器上,代码写的看起来乱七八糟的话。如果破解人员赶时间,或者懒得做的话,可能都不会去动那个代码。

出0入0汤圆

发表于 2013-3-30 20:00:57 | 显示全部楼层
大家讨论了这么多,基本上可以总结一个相对安全提高解密成本的法子了
头像被屏蔽

出0入0汤圆

发表于 2013-3-30 20:58:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-4-14 19:25:55 | 显示全部楼层
有问题就有答案

出0入0汤圆

发表于 2013-4-20 09:16:22 | 显示全部楼层
没有绝对的安全吧!!!

出0入0汤圆

发表于 2013-4-20 09:18:10 | 显示全部楼层
去X宝 搜解密的价格,就清楚了。

出0入0汤圆

发表于 2013-4-29 10:45:51 | 显示全部楼层
现在破密那些厉害的很

出0入0汤圆

发表于 2013-5-3 10:32:59 | 显示全部楼层
看到标题,就想到STC恶心的广告“坚不可摧”。。。

出0入0汤圆

发表于 2013-6-25 16:50:14 | 显示全部楼层
程序的加密

出0入0汤圆

发表于 2013-6-26 08:12:55 | 显示全部楼层
logicgreen 发表于 2013-2-4 18:48
首先不要忙着拍砖,我来整理一下思路。
利用全球唯一ID(每颗MCU都有一个唯一ID)的加密精髓在于防止程序轻 ...

每个CPU一个不一样的CODE,而且是和芯片ID相关这个想法很好。
如果破解的人 读到了可运行的二进制代码,并且可以仿造芯片的ID,那也容易破解,相当于这个钥匙“芯片ID”,破解者可以得到,就可以拿这个钥匙去开加密过的二进制代码了。

出0入0汤圆

发表于 2013-6-26 08:49:57 | 显示全部楼层
使用ID做加密关键数据,一定要保证ID有足够长度同时加密后ID不可读出。

出0入0汤圆

发表于 2013-6-26 09:13:54 | 显示全部楼层
看了全文,感觉就是gzhuli等为数不多的几个老鸟在教一帮新手思考问题不要太想当然了的道理。感觉现在在win32下加密多数人都用加密狗了,很多人只懂得“脱壳”一个手段,很多加解密手段慢慢失传,再没有当年DOS下花指令,大循环,多出口,的研究了。。。

出0入0汤圆

发表于 2013-6-26 11:35:50 | 显示全部楼层
ilcvm 发表于 2013-2-4 16:56
你的方法必须保证你读唯一ID的行为不被破解者看出。像STM32的独立ID在某个固定地址,那么只要找出访问那个 ...

加个函数,来算出那个地址,而不是直接读取地址,那应该可以解决

出300入477汤圆

发表于 2013-6-26 11:57:17 | 显示全部楼层
gzhuli 发表于 2013-2-6 00:07
常用的平台基本上都有。

这个是ARM Keil的:

读唯一ID的时候这么读:
BYTE* p=ID_ADDRESS-__LINE__;
*(p+__LINE__-1)就是唯一ID的开头

用适当的宏把上面两句话封装起来方便操作,这样就把访问唯一ID的地址隐藏起来了。
这一段程序在每个地方编译的结果都不同,因为你的代码line不同^_^
这样就不可能简单的在反汇编里面查找唯一ID的地址了。

对此,我能想到的方法只能是开着内存断点来运行所有程序,手动修改每个检查唯一ID的地方。
但是,除非你把所有的程序分支都执行到(这基本上不可能),有任何一个检查唯一ID的地方没有找到都是白搭。
比如,每小时检查一次,每天检查一次,遇到某某条件检查一次。。。
这些检查的方法看起来都像在访问全局变量。。。

出0入0汤圆

发表于 2013-6-26 12:05:34 | 显示全部楼层
只要可以加密就一定可以解密的,哪有决对的??

出0入0汤圆

发表于 2013-6-26 14:39:46 | 显示全部楼层
redroof 发表于 2013-6-26 11:57
读唯一ID的时候这么读:
BYTE* p=ID_ADDRESS-__LINE__;
*(p+__LINE__-1)就是唯一ID的开头

这个方法不错。

出0入0汤圆

发表于 2013-6-26 15:15:32 | 显示全部楼层
去!
人家有个烧录器,
不但可以烧FLASH/EEPROM,还可以把厂家ID区烧了,跟你那个样板IC一模一样.

所以说,IC厂家出货是唯一ID的MCU,不过市面上大把IC同一个ID!

出0入0汤圆

发表于 2013-8-5 15:58:33 | 显示全部楼层
xwkm 发表于 2013-2-4 19:03
用simlator去跟踪程序。然后找到GUID。替换掉即可。

那不是就跟内存注册机一个道理,或许可以烧原版程序,外挂mcu模拟模拟器,但成本也上去了,目前好像没这个方案,不知可行否?

出0入0汤圆

发表于 2013-8-5 22:18:24 | 显示全部楼层
osfg 发表于 2013-8-5 15:58
那不是就跟内存注册机一个道理,或许可以烧原版程序,外挂mcu模拟模拟器,但成本也上去了,目前好像没这 ...

用仿真器就行了
找到破坏代码段摘掉即可。

出0入0汤圆

发表于 2013-8-8 22:44:23 | 显示全部楼层
值得关注的加密和解密讨论。学习中

出0入0汤圆

发表于 2013-8-31 17:08:33 | 显示全部楼层
本帖最后由 adce 于 2013-8-31 17:17 编辑

LZ的方法很好了...基本不增加成本就能实现一定的强度...
再好的防盗门墙也是空心砖...电锤几分钟的事...
更多的是挡君子不挡小人...

防破解的方法是开源...古语有云...有钱的捧个钱场...没钱的捧个人场...
比如FreeRTOS和SafeRTOS...FreeRTOS用惯了...在项目需要或是有钱的时候真的会考虑SafeRTOS的...
这也是微软的手段...学生们你们随便用...反正你们将来就会这个...老板们看着办...
从穷人身上抠钱能抠几个钱...卖多少个塑料袋才能赶上一个LV的利润??

大大方方的开源一个版本...
有品味的用户信不过盗版的...看了你开源的代码质量自然信得过你...你看哪个女明星因为开源了人气下降了?好身材不怕开源...
没品的用户会在破解更优秀版本和免费的折衷版本间抉择...没品的用户你怎么做都不会给你钱的...即使花钱了也会想办法折磨你...
并且开源会使很多竞争对手放弃这个领域...

中国生产的中国奶粉什么价钱...中国生产的外国奶粉什么价钱?
我国不缺大头...不差钱的多的是...
市场分析的短板没必要用软硬件开发来弥补...
品牌价值与市场营销远重于开发...
不要做越界的事...不是说你会做CT机你就能当医生了...

都是当保姆...去北京上海当多好...


另外...不要报复用户...如果因为报复用户造成用户数据丢失...即使用户用的是盗版...你也需要赔偿的...
我国杀毒软件在这方面有先例...

出0入296汤圆

发表于 2013-9-2 18:09:44 | 显示全部楼层
adce 发表于 2013-8-31 17:08
LZ的方法很好了...基本不增加成本就能实现一定的强度...
再好的防盗门墙也是空心砖...电锤几分钟的事...
更 ...

专门顶楼上,尤其是这句"你看哪个女明星因为开源了人气下降了?好身材不怕开源..."

出0入0汤圆

发表于 2013-9-8 20:46:21 | 显示全部楼层
这个IDX是如何写到EEPROM里的?是程序自己计算自己写,还是PC机下载IDX到EEROM里?

出0入0汤圆

发表于 2013-9-9 16:42:38 | 显示全部楼层
STM32不是号称具有唯一ID吗?

出0入0汤圆

发表于 2013-9-9 16:53:11 | 显示全部楼层
简单的加密级别,这样也不错了。
要求高的场合不行。

出0入0汤圆

发表于 2013-9-9 17:02:11 | 显示全部楼层
除了使用唯一ID参与运算加密外,我一般会在不确定的地方编一个函数得到当前的指令指针,然后在最终程序确定的时候,通过仿真得到当前的指令指针,然后将此指令指针直接宏定义好,当程序运行到此处,会比较此时的指令指针是否是程序当中的保存指针,如果不同,则不正常运行程序,这个是ID和指令指针联合起来用,破解者如果修改程序,必导致此处的指令指针不正确。。

出0入0汤圆

发表于 2013-9-9 17:35:23 | 显示全部楼层
本帖最后由 meiko 于 2013-9-9 17:38 编辑

我做产品防破解采用如下策略:
1)正常程序运行启动时,判断rom中的某个变量A,为0就需要读一次某个/几个端口的状态,一旦对上就将rom中的A写1。这一般需要用几个跳线在整机安装测试时完成。
2)如果A==1,程序运行正常,但有某个或者几个参数当满足一定条件时(下面的3) ,会略有改变,于是整个设备基本正常,但又性能下降,看上去完全不像是软件问题,而是很自然的会当作是某些机械或者其他方面性能下降所致。
3)我喜欢用铁电的Fram来记录运行日志,开机次数,运行时间等等,运行日志和上述方法结合使用,可以把防破解拷贝做的很隐蔽。虽然破解很容易,而且不需要分析修改代码,就能“正常”工作,产品一旦经过相当长一段时间使用都会出问题,卖的越多亏的越多。

出0入0汤圆

发表于 2013-9-9 17:59:53 | 显示全部楼层
126 楼是长期根本的出路.
目前来看,最简单最有效的加密方式是联网验证,这个是芯片级解密无法破解的.
如果没法联网,通用MCU基本无密可加,因为通用 MCU 可以被全芯片复制.

出0入0汤圆

发表于 2013-9-16 15:43:50 | 显示全部楼层
都是软件高手,不好说谁最强。

出0入0汤圆

发表于 2013-9-16 16:29:54 | 显示全部楼层
楼主太天真了.
给得起钱,美丽坚照样摧毁!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

出0入0汤圆

发表于 2013-9-16 16:40:46 | 显示全部楼层
GUID只是一个基本条件,算法利用GUID生成另外一组数据,所以算法才是关键。

目前世界是比较可靠和通用的是RSA算法。

出0入0汤圆

发表于 2013-9-16 16:49:51 | 显示全部楼层
哎,这这个帖子都是用的盗版的OS。

出0入0汤圆

发表于 2013-9-16 17:00:56 | 显示全部楼层
本帖最后由 logicgreen 于 2013-9-16 17:02 编辑
dgdzas 发表于 2013-9-16 16:49
哎,这这个帖子都是用的盗版的OS。


从操作系统来说,盗版只是自己用一下而已,无法破解双向验证(即联网正版验证)。

小系统也一样,如果系统是单一的独立系统,那么加密算法容易被屏蔽复制;

如果是子系统,要通过上位机算法来验证,而且上位机不允许被复制的情况下,那么采用RSA非对称加密算法几乎是不能被破解,目前2048bit RSA算法的安全性可以到2030年,

对于个人(科研机构采用超级计算机会加速破解),就算是512bit RSA也无能为力!

出0入0汤圆

发表于 2013-9-16 17:15:21 | 显示全部楼层
我的方法是先做个明显的加密程序,解密不对就跑不过去,然后在运行过程中做个很隐秘的加密程序,每隔一段时间就运行一次,如果解密失败就有一定几率自毁……

出0入0汤圆

发表于 2013-9-17 11:38:41 | 显示全部楼层
专注于软件的加密解密,这帖可以了解到一些东西,不错。

出0入0汤圆

发表于 2013-10-1 11:17:37 | 显示全部楼层
赞同傻孩子的观点,楼主提的是一种加密的方法,至于其牢靠程度虽然不能说一定坚不可摧,但是经过一定的伪装和优化还是可以成为一种性价比比较高的加密手段。很多人提到的超级计算机啦,离子束搭线读取啦都是成本很高的硬件机密方式,就算读出来了如果没有办法对代码进行分析并剥离或伪造加密途径还是一样没法投产的。加密的重要性并不仅仅在于算法,更在于如何隐藏加密途径,inline方式和插入无效指令以及通过编译器打乱汇编代码的可读性都是一些伪装和隐藏的方式。做不到绝对的可靠,但是可以增加解密者的绝对工作量。

出0入0汤圆

发表于 2013-10-28 17:37:50 | 显示全部楼层
学习了,非常好。都是高手

出0入0汤圆

发表于 2013-10-28 17:48:30 | 显示全部楼层
很不错 很好 很不错

出0入0汤圆

发表于 2013-10-29 21:33:16 | 显示全部楼层
不错                     

出0入0汤圆

发表于 2013-12-11 16:59:13 | 显示全部楼层
make~谢谢分享

出0入0汤圆

发表于 2013-12-11 17:57:57 | 显示全部楼层
真正的加密是破解后不要完全不能用,而是生出一些BUG来,让破解者开始偷笑最后批量盗版后哭都来不及。
现在我们可能用的很多常用软件都是这样的吧?

出0入0汤圆

发表于 2013-12-19 16:32:28 | 显示全部楼层
csdnct 发表于 2013-2-4 18:08
所有的单机程序都是可以破解的,真正要保护自己的成果其实并不是通过加密,而是通过网络服务, 这就像杀毒 ...

我同意!!顶

出0入0汤圆

发表于 2013-12-19 16:33:39 | 显示全部楼层
agnd 发表于 2013-12-11 17:57
真正的加密是破解后不要完全不能用,而是生出一些BUG来,让破解者开始偷笑最后批量盗版后哭都来不及。
现在 ...

这个才是加密高手啊

出0入0汤圆

发表于 2013-12-21 13:20:28 | 显示全部楼层
可能lz标题有点大了,然后很多“大牛们不服气了! 然后开始教训一番!

可是,我们回过头想想,有意思吗?lz的观点也是非常不错的!如果自己不会,那就学着点,可以讨论,但不要姿态高!

“大牛”们第一句就是:矛和盾!
虽然,我也认同,但是,既然这么厉害,“大牛”们去解解安川的伺服啊? 即使给你100w rmb,你解的出来吗?

然后很多“大牛”们又说道,替换GUID,呵呵 给你bin,你反汇编去找这个GUID,累死了都未必找得到。
实现方式,就是随机发5个消息,每个消息包含GUID的地址,然后接收消息的任务在5次后,通过其他算法
来组装GUID地址,然后再简单分解发送消息,然后在另外一个任务中接收这个消息,组合读ID,然后把ID经过算法
扩充到64个bytes动态放到一个区域ram。然后,再说补充一个算法,bin种带64字节的本bin的checksum,然后这个
checksum,在一个任务中,随机的去验证,如果验证不对,就mask一些函数的功能,也是通过消息实现!

再一个多任务中系统,即使你用softic去模拟,也是一筹莫展! 不然,“大牛”们为什么不去破解一些vxworks的内核!
那个也很值钱的!

出0入0汤圆

发表于 2013-12-21 16:03:17 | 显示全部楼层
标记一下,慢慢消化

出0入0汤圆

发表于 2013-12-21 16:06:01 | 显示全部楼层
中国人的智慧是无穷滴…………

出0入0汤圆

发表于 2013-12-21 17:54:45 | 显示全部楼层
不错,参考以下各楼:139 119 27 49 50 57

出0入0汤圆

发表于 2014-1-16 10:53:30 | 显示全部楼层
Gorgon_Meducer 发表于 2013-2-4 17:23
代码尺寸就上去了哦~ 执行效率也随之受到影响……不过如果有内部的什么1~4个周期的硬件CRC之类,就可以
...

不太明白这句话,只要解密者拿到了二进制文件,反汇编后应该就可以看出你用的什么加密。
如果单片机内部集成了算法,我不需要具体算法怎么样,我只需要在这个单片机运行一次
这个硬件,入口是单片机ID,出口是运行后的数据。替换掉原来程序的加密数据就可以了啊。
这样根本就不用管作者到处与或非这些手法了吧?

出0入296汤圆

发表于 2014-1-16 12:25:30 | 显示全部楼层
304301959 发表于 2014-1-16 10:53
不太明白这句话,只要解密者拿到了二进制文件,反汇编后应该就可以看出你用的什么加密。
如果单片机内部 ...

是的,有硬件就很牛。但这个帖子的讨论前提是基于唯一ID的,现在大部分MCU只有UID,没有特殊的加密硬件,
所以只针对UID加密方法的讨论就具有了一般性。

出0入0汤圆

发表于 2014-1-17 09:45:38 | 显示全部楼层
Gorgon_Meducer 发表于 2014-1-16 12:25
是的,有硬件就很牛。但这个帖子的讨论前提是基于唯一ID的,现在大部分MCU只有UID,没有特殊的加密硬件, ...

那是不是可以认为:在UID加密方式下,用软件写入加密算法还相对可靠一点。因为如果解密算法是不可逆的,
那么解密者也不能单单分析解密算法就推导出加密算法。不过这样做inline的画应该会占用CPU较大资源吧?

请指导一下,用自身硬件如何加密呢,比如stm32f4内置哈希算法?

出0入296汤圆

发表于 2014-1-17 10:19:55 | 显示全部楼层
304301959 发表于 2014-1-17 09:45
那是不是可以认为:在UID加密方式下,用软件写入加密算法还相对可靠一点。因为如果解密算法是不可逆的,
...

基本上单向散列算法只能用于签名,因为它只是原始信息的一个不可逆转换。
一般用签名算法配合内部的一些对称加密算法效果会更好,因为这就解决了
对称算法秘钥保存的问题。

出0入9汤圆

发表于 2014-1-17 17:09:39 | 显示全部楼层
标记一下。慢慢地看。

出0入0汤圆

发表于 2014-1-17 17:24:25 | 显示全部楼层
csdnct 发表于 2013-2-4 18:08
所有的单机程序都是可以破解的,真正要保护自己的成果其实并不是通过加密,而是通过网络服务, 这就像杀毒 ...

联网也不行啊。塞班最难破解的软件x-plore就曾经被毛子伪造了个验证服务器……

出0入54汤圆

发表于 2014-1-24 09:09:22 | 显示全部楼层
还是加密太简单,人家可以模拟你的ID的

出0入0汤圆

发表于 2014-1-24 11:39:50 | 显示全部楼层
牛人比较多,在中国为了防止山寨必须增加防盗意识!
支持!!
如果公司牛逼直接找那家国产stm替代公司,帮我生产和要山寨stm32 id一样的片子,直接烧录hex文件,一切都没用,所有基于id加密的都白搭!最够!

出0入0汤圆

 楼主| 发表于 2014-2-10 13:05:16 | 显示全部楼层
本帖最后由 smset 于 2014-2-10 13:08 编辑
tang0571 发表于 2014-1-24 11:39
牛人比较多,在中国为了防止山寨必须增加防盗意识!
支持!!
如果公司牛逼直接找那家国产stm替代公司,帮 ...


真正唯一ID,就说明ID复制的代价极高。

你说的这种方式仅仅是理论上可行:

真能造CPU的公司,会为点小利给你干这事儿?

愿意干这事儿的公司,就算能造出CPU,你真敢用到产品上?

出0入0汤圆

发表于 2014-2-10 15:34:28 | 显示全部楼层
smset 发表于 2014-2-10 13:05
真正唯一ID,就说明ID复制的代价极高。

你说的这种方式仅仅是理论上可行:

good!
说的有道理!
thanks!

出0入0汤圆

发表于 2014-2-21 17:32:44 | 显示全部楼层
感谢热情的坛友!

出0入0汤圆

发表于 2014-3-2 01:29:32 | 显示全部楼层
只要找到这个函数   “将IDX保存到EEPROM”   

出0入0汤圆

发表于 2014-3-2 01:31:19 | 显示全部楼层

只要找到这个函数   “将IDX保存到EEPROM”   

出0入0汤圆

发表于 2014-4-10 13:44:35 | 显示全部楼层
mark,谢谢分享!

出0入0汤圆

发表于 2014-9-22 17:05:39 | 显示全部楼层
感觉好牛逼的帖子,学习一下

出0入0汤圆

发表于 2015-6-18 14:31:47 | 显示全部楼层
Gorgon_Meducer 发表于 2014-1-17 10:19
基本上单向散列算法只能用于签名,因为它只是原始信息的一个不可逆转换。
一般用签名算法配合内部的一些 ...

您好,在论坛看到您有关 MCU中软件机密的精彩回答,我有这样一个项目 看您能做吗?  我们最近开发了一款瑞萨RL78内核的产品,但瑞萨这款芯片没有唯一ID不知道 您有什么好的方法加密吗? 我们可以付费合作,  我的联系方式:电话:18862233625 qq:357415846 刘先生,谢谢

出0入0汤圆

发表于 2015-6-18 14:55:32 | 显示全部楼层
破解成本高于研发成本,别人就不会去碰了

出0入0汤圆

发表于 2015-6-18 16:13:55 | 显示全部楼层
先有阳光开锁,后有月光开锁,再有星光开锁,一个比一个牛

出0入0汤圆

发表于 2015-7-16 21:50:26 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2015-8-18 06:42:01 | 显示全部楼层
很不错的讨论

出0入0汤圆

发表于 2015-8-18 07:44:07 | 显示全部楼层
说的有道理
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 15:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表