找回密码
 立即注册
查看: 474|回复: 19

【爆料】如何给STC单片机加密?破解者又是如何破解的?教你让破解者赔上一个亿!

[复制链接]
  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 116 天

    [LV.6]常住居民II

    25

    主题

    304

    回帖

    1053

    积分

    荣誉版主

    Cyber Hamster

    积分
    1053
    发表于 2024-2-10 22:16:15 | 显示全部楼层 |阅读模式
    知己知彼百战百胜,首先科普一下破解流程:
    首先是开盖,使用激光打标机去除封装,激光打标机是光纤增益介质泵浦模块内部808nm的大功率半导体激光二极管阵列经过光纤增益介质泵浦输出1064nm激光再经过聚焦振镜场镜实现激光雕刻的,芯片表面的字符也是这种机器加工的,开盖是反复执行这个过程,直到去除die上方的所有封装露出die,然后是去除各种层,二氧化硅层金属层钝化层聚酰亚层等等,直到露出FLASH存储器,然后是码点染色,因为晶体管在光学显微镜下都是透明的,用离子染料给存储数据带有电荷的浮栅染色,然后是显微拍照拼接,根据图像上不同颜色代表0或1的码点颜色得到原始bin文件,而芯片是全程不需要通电的,这也是做芯片失效分析的流程,只不过做芯片失效分析时更关注的是哪里有意外的短路开路等等。
    大家想方设法不让别人知道单片机型号的做法在他们眼里都是雕虫小技,据本人卧底刺探情报所知,STC8H8K64U解密价格8500元,敌方称技术很熟练。

    那么如何打赢这场没有硝烟的战争呢?首先要说的是,没有绝对破解不了的,只是成本不同而已,一般破解成本大于研发成本就可以视为加密成功。

    下策
    首先是大家熟知的打磨丝印(准确来讲不应该叫丝印,丝印工艺是把芯片放在专用治具上用油墨丝网印刷的,就是PCB字符的工艺,现在芯片上很少用了,都是激光雕刻了,也叫镭雕,但我不喜欢这个词,因为这个词是根据laser这个英文单词音译的,中文解释不通,就像麦克风应该叫话筒一样,讲中国话),虽然这对大佬几乎是没用的,破解的根据脚位一眼就能看出来是不是STC,基本上看VCC和GND就可以知道是不是了,然后连上STCISP点一下检测MCU选项,就可以知道型号了,但是菜鸟中的菜鸟,你把文字磨掉了,他就猜不到了,对大佬来说也能拖延一下时间,能增加点成本是一点对吧,但是挨个打磨的时间成本是单个的时间乘以个数,毕竟量产的PCBA都是相同的,破解者根据一块PCBA就可以得到型号,挨个打磨的成本是远大于对应的破解成本的,毫无战损比,不可取,但量大可以找原厂定制无字芯片,量少只能看看对应型号有没有其他大客户定制后剩的,还有就是用黑色环氧树脂灌封,环氧树脂是高分子预聚物,固化后分子间形成交联键高度不熔不溶,除非用能打破交联键的物质比如发烟硝酸来溶解,环氧树脂也不是相同的,双组份一个带有环氧基另一个带有胺基,环氧基一般是石油醚类物质,胺基有乙二胺和异佛尔酮二胺等等,按摩尔浓度配比,还可以加改性剂比如塑化剂和增韧剂等,还有各种填料,掺在里面降低成本的,此类内容和本文主题不符就不过多赘述了,说重点,环氧树脂除了特殊化学物质一般只能以机械方法去除,影响强度的因素主要是配比不当,填料沉淀导致密度不均匀,还有就是填料的化学性质问题,劣质环氧有用碳酸钙做填料的,化学方法很容易溶解掉,改用二氧化硅(就是玻璃粉末)能大幅增强耐化学溶解的性能,还可以往里加砸碎的报废芯片以降低成本,芯片本身也是环氧树脂,化学性质和强度都相当强,破解者就算硬抠,抠到芯片碎片也不敢再抠了,怕电路被破坏了,让破解者边抠边骂人,这种方法可以把整个PCBA都封起来,也能保护除单片机外的其他电路,但是需要有外壳,成本、散热条件、机械结构等因素允许的情况下可以考虑。
    中策
    到这里就是应对一般的破解者了,要假设他们已经得到了芯片型号,PCB都打磨扫描完了,原理图也反推出来了,准备抄板了,这个时候就要保证破解者就算是花点钱得到了原始bin也不能工作,这个时候就需要确保芯片内的程序,换个单片机写进去不工作,这就需要利用芯片与芯片之间的不同之处来实现了,相信大家已经想到了,这就是STC单片机的全球唯一ID,在程序中验证这个ID,不正确不工作,就可以了,注意不要用软件方式,比如修改CODE或EEPROM,不绑定硬件的纯软件方式是可以被全套复制走的,STCISP的自动增量只适合给单片机增加序列号,不要用于加密,也不要用CODE区或RAM区或EEPROM区的全球唯一ID,因为这些都是可以被修改的,CODE区可以直接修改bin写入,RAM区或EEPROM区破解者可以在程序后面增加一段初始化这些区域的程序,然后在程序开头LJMP到程序后面初始化全球全球唯一ID的程序中初始化RAM区或EEPROM区的全球全球唯一ID,然后再LJMP回来,对于破解者在程序后面空白区域插入修改程序来修改RAM区或EEPROM区,可以在CODE区空白区域手动填满随机数,并预留一个校验和位置,计算整个CODE区除了校验和位置的校验和,连程序带随机数全部校验,然后在程序中校验整个FLASH并和指定位置的校验和比对,让CODE区填的满满的,破解者动一个bit都无法工作,但这种方法会增加程序下载时间,因为是全片下载的,回到正题,前文提到的填满随机数并校验的方法,是没有只读SFR全球唯一ID的老型号可以使用的(不推荐),STC单片机的全球唯一ID强烈建议使用只读SFR中的,因为这是用户程序无法修改的,其实STCISP已经有这个功能了,就是ID号加密,ID运算后写入到指定位置,程序中再以相同算法计算一遍,这样程序和硬件就绑定了,而且都由STCISP自动完成,不需要手动操作,这样破解成本能加一位数,参考破解成本十万元,也就是研发成本在十万元以内的做到这里就够了,如果有人问,如果上述的方法,加密算法被破解了怎么办,还能不能让破解成本再高点,当然可以,我就自己写个超级复杂的加密算法,先下载加密程序A,选择下次下载不擦除EEPROM,加密程序A会在EEPROM中写入密钥,并在串口输出另一个密钥,在串口助手手动复制这段密钥后,在用户程序B的bin文件手动填入这个密钥,下载程序B,选择下次下载擦除EEPROM,这样EEPROM和CODE就都有密钥了,设置用户口令,空白区域填满随机数并校验,能用的加密方式都用上,但这种方法非常繁琐,不适用于量产,如果单价高不量产,还可以记录每个产品的ID和密钥,绑定购买者的身份,这样如果发现市面上有仿制品,也能知道是谁拿去破解的,还有注意校验密钥不能就一个函数一个if就完了,否则找到位置DJNZ改JNZ或JNZ改DJNZ就轻松跳过(见过破解exe程序是这样的,结果是注册码不正确正常工作,注册码正确反而不工作),如果程序空闲时间比较充足的话,可以复制一大堆类似功能的函数,反复读密钥反复校验CODE和EEPROM,注意别让编译器优化掉,再插入一大堆假的读密钥程序,读密钥后调用math.h进行浮点运算,真真假假,假假真真,这样破解者就算反汇编,一个函数进去都出不来,绕死他,大量消耗破解者的反汇编工时,此时加密程序已经占到全部程序的一半以上了,加密程序比真正干活的程序都多,哈哈,这样破解成本能再加一位数,参考破解成本百万元,别急,还能让破解成本再加个零,那就是多机通信,还是异构的,x51、x86、ARM、RISC全用上,FLASH型EEPROM型OTP型全用上,MCU、SOC、DSP、GPU、NPU、CPLD、FPGA全都用上,一大堆芯片一起工作,破解每个都是上述的难度,芯片间加密通信,密钥随机数掺杂,真真假假,假假真真,再想个办法联网,设备连接到你的服务器才能正常工作,这样破解成本能再上一个数量级,参考破解成本千万元,相信此时破解者已经欲哭无泪了,但还没完,如何让破解成本过亿呢?
    上策

    假设破解者铁了心要破解,豪掷一千万,就是要破解,怎么办?看了姚总发的帖真是令人拍案叫绝,他有钱就让他破嘛,你留个后门,先假装正常工作,让破解者感觉破解成功了,借钱仿制,一段时间后等他量产销售了再异常工作,此方法需要你是个从业多年的大佬,懂电子产品的量产销售制造成本产能利润生命周期加密解密程序算法等等,精心设计好在什么时间以何种概率如何异常工作,还是时好时坏伪装成其他难以复现的故障,尽量使仿制者损失最大化,让仿制者倾家荡产,赔他一个亿!
    总结
    后面都是些超现实内容了,大家就当讲个故事看个乐呵,综上所述,性价比最高的方法就是STCISP的ID号加密,用只读SFR中的全球唯一ID。

    截图202402110801393601.jpg
    【新提醒】传统加密的笑话, STC对加密的延申发展,放心的【远程升级】,视频讲解 - 程序加密后传输/发布项目程序/USB-ISP下载/远程升级/ID号加密 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)



    (=・ω・=)
    回复 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9456

    回帖

    1万

    积分

    管理员

    积分
    14013
    发表于 2024-2-10 22:22:23 | 显示全部楼层
    我们咋不知道前面读FLASH的方法,
    如果 破 STC8H8K64U的系统区引导码也只需要 RMB8500,
    请解出来给我确认后,我们给RMB17000元,相信本站的公信力,
    我们如发现只需要RMB8500,定会不停升级芯片斗争到底


    点评

    应该是开盖读出bin的价格,某宝搜单片机解密问的  发表于 2024-2-10 22:24
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9456

    回帖

    1万

    积分

    管理员

    积分
    14013
    发表于 2024-2-10 22:27:24 | 显示全部楼层
    某宝也信 ? 斗争到底,我们出 17000元,
    买我们自己的STC8H8K64U的系统区引导码,*.bin

    点评

    读出CODE和EEPROM再写入新的单片机,如无任何加密措施,就可被复制,和ISP区引导码无关  发表于 2024-2-10 22:29
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9456

    回帖

    1万

    积分

    管理员

    积分
    14013
    发表于 2024-2-10 22:28:59 | 显示全部楼层
    防止用户区被别人搞了,用楼主推荐的我建议的上策,
    这样没人敢尝试解你的代码去生产

    点评

    个人认为,能根据加密前后的数据反推出ID加密算法已经超级难了,再加上多处读取只读SFR的ID并运算,避免在读ID后只有一个if被发现改掉,够用了  发表于 2024-2-10 22:40
    STCISP的ID号加密,用只读SFR中的全球唯一ID,这种方法已经够用了,而且不会增加下载难度,不用人工挨个操作  发表于 2024-2-10 22:34
    哈哈哈  发表于 2024-2-10 22:32
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9456

    回帖

    1万

    积分

    管理员

    积分
    14013
    发表于 2024-2-10 22:34:55 | 显示全部楼层
    用户区是只写不读的,他如何搞出用户区,你亲自确认,
    实际用你认可的上策布局后,如能被解开后能使用,
    我们也出 17000元,如这么低的成本搞到用户区代码-bin,

    我们升级芯片,斗争到底 !!!

    点评

    光罩相同,芯片硬件就相同,除非每个芯片光罩都各不相同,但这是不可能的对吧,而单片机光刻好的是无法直接对其进行电性能测试的对吧,我虽然没接触过芯片生产,但以当今科技水平推断,这是不现实的,只有在金线键合  详情 回复 发表于 2024-2-10 23:15
    直接开盖,电都不通,连程序判断是否将被破解然后擦除FLASH的机会都没有,所以加密设计时就要假设破解者已经得到CODE区和EEPROM区中的全部内容了  发表于 2024-2-10 22:50
    所以说必须绑定硬件,也就是只读SFR中的全球唯一ID,保证就算CODE区和EEPROM区中的内容完全相同也无法工作  发表于 2024-2-10 22:47
    不通电,直接开盖,是物理方法读取,去层染色拍照,据我所知破解的都是这样弄的  发表于 2024-2-10 22:42
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 116 天

    [LV.6]常住居民II

    25

    主题

    304

    回帖

    1053

    积分

    荣誉版主

    Cyber Hamster

    积分
    1053
     楼主| 发表于 2024-2-10 23:15:56 | 显示全部楼层
    神农鼎 发表于 2024-2-10 22:34
    用户区是只写不读的,他如何搞出用户区,你亲自确认,
    实际用你认可的上策布局后,如能被解开后能使用,
    我 ...

    光罩相同,芯片硬件就相同,除非每个芯片光罩都各不相同,但这是不可能的对吧,而单片机光刻好的是无法直接对其进行电性能测试的对吧,我虽然没接触过芯片生产,但以当今科技水平推断,这是不现实的,只有在金线键合并封装分割后的成品芯片才能进行电性能测试的对吧,也就是说,BANDGAP电压、32K时钟频率,IRC BAND参数都是封装后写入单片机的,而不是硬件确定的,只读SFR中的信息也是软件写入的,而不是光刻时确定的接低电平或高电平(比如BANDGAP电压是制造误差无法在光刻时就得到),只读SFR只是用户程序无法修改,但如果破解者发现了原厂封测时修改只读SFR的方法,是不是就可以修改只读SFR呢?只读SFR本质上是寄存器,不具备掉电存储的功能,所以可以推断,只读SFR的初始化是由ISP区引导码完成的,并在写入后锁定,不能被用户程序修改,而ISP区是FLASH,能在掉电时储存各种和芯片硬件相关的信息并在上电后写入只读SFR,如果破解者破解了只读SFR的修改权限或把ISP区改了,让所有单片机的ID一样,那么再写入相同程序就被破解了,所以这是只读SFR和ISP区的安全性问题
    (=・ω・=)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 171 天

    [LV.7]常住居民III

    67

    主题

    857

    回帖

    2874

    积分

    金牌会员

    积分
    2874
    发表于 2024-2-12 10:15:31 | 显示全部楼层
    技术性挺高的,不懂这个。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-12-2 09:55
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    13

    主题

    74

    回帖

    601

    积分

    高级会员

    积分
    601
    发表于 2024-2-12 13:09:07 | 显示全部楼层
    我用STC从来不加密,没想到开盖才8500,看来软加密必须要了
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    2

    主题

    5

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2024-3-14 17:07:42 | 显示全部楼层
    苹果看了都说好
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    0

    主题

    5

    回帖

    102

    积分

    注册会员

    积分
    102
    发表于 2024-4-17 22:23:56 | 显示全部楼层
    ID号加密不错
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-16 19:30 , Processed in 0.074350 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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