查看: 3629|回复: 3

几种读取唯一ID方法的优缺点分析

[复制链接]
  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-8-12 20:36:50 | 显示全部楼层 |阅读模式
    分享到:
    STM32系列芯片内置有芯片唯一ID,这个为我们进行程序加密提供了一种低成本的方法.为了对抗解密就必须尽可能隐藏程序内读取ID的地方,下面对这些常用方法作个比较,当然是一家之言,权当抛砖引玉.

    1    直接读取ID,也可把普通的 LDR 指令用 LDREX 指令代替; 特点:简单,隐蔽性差,不能对抗模拟器攻击.
    1.1 ID地址在运行时生成.特点:简单,有一定的隐蔽性,不能对抗模拟器攻击.
    1.2 用硬件 DMA 把 ID 传输到RAM中; 特点:简单,隐蔽性较好,估计能对抗普通模拟器攻击.

    2. 不直接读取 ID 而是生成相关区域的 Hash; 特点: 程序稍微复杂,隐蔽性较好,估计不能对抗模拟器攻击.
    2.1 用 STM32 的CRC硬件模块生成 Hash; 特点: 程序简单,隐蔽性较好,估计能对抗普通模拟器攻击;但是碰撞性大一些.

    实际加密产品时,把这些方法全部或组合运用到产品中,增强加密性.

    评分

    参与人数 1与非币 +5 收起 理由
    loveeeboard + 5 三周年铜板双倍!

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-7-21 12:58
  • 签到天数: 907 天

    连续签到: 2 天

    [LV.10]以坛为家III

    发表于 2015-8-13 09:22:04 | 显示全部楼层
    顶起  学习!!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-11-26 15:06
  • 签到天数: 427 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-8-13 17:30:53 | 显示全部楼层
    不错 学习了                        
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2020-5-20 09:31:23 | 显示全部楼层
    1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可

    2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区(stm8为EE区),程序运行时去验证程序区数据是否正确

    3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用

    4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。//Q9272078

    四、做软件加密时注意
    1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0   STM8: 0x4865~0x4870
    2, 利用校验和或是crc对程序区进行校验,防止改程序
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 05:52 , Processed in 0.154791 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.