0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

由于芯片商在出新的过程中有安全性的考量,使芯片性能越来越完善

牵手一起梦 来源:ST MCU 信息交流 作者:ST MCU 信息交流 2020-06-04 14:47 次阅读

绝大多数STM32系列的芯片都在固定的地方放置了长度为96位的唯一身份识别码,简称UID,只有极少数STM32系列芯片内部没有该UID,比方超值型STM32F0x0系列,STM32F100系列。具体到哪颗芯片到底有没有UID,在芯片数据手册的首页都有明确的说明,无需猜测。如下图所以:

由于芯片商在出新的过程中有安全性的考量,使芯片性能越来越完善

芯片所对应的参考手册里,有对该UID存放地址的详细介绍。地址因不同系列或子序列而不同。

由于芯片商在出新的过程中有安全性的考量,使芯片性能越来越完善

关于这个UID常有人有些疑问,有几个问题在这里稍微总结下:

1、有无问题。上面说了绝大部分STM32都内置UID,具体以查看数据手册为准。

2、唯一性问题。该UID的唯一性是靠96位这个整体来保证其唯一性,你若截取部分就不保证了。

3、内容问题。有人对这个UID内容似乎很好奇,这点在STM32参考手册里并无详细描述,但这并不影响使用。【因为STM8有些芯片也有96位UID,那里有较为详细的介绍,涉及芯片WAFER生产加工工程中的一些各种坐标信息、wafer编号信息、产品批号信息等】

4、地址问题。芯片UID的存放地址要到芯片对应的参考手册里去查对。特别要提醒的是,并非所有STM32系列的UID信息存放在某个起始地址开始的连续空间内。

5、怎么用的问题。说实在的,这个就很难说了,反正STM32有这个特性在,肯定没有固定不变的用法。具体怎么用就看你自己了。对于该UID,STM32参考手册给了些大致应用方向的介绍:

由于芯片商在出新的过程中有安全性的考量,使芯片性能越来越完善

简单点说,该UID可以做特定序列号;做FLASH编程的安全密钥;激活安全启动流程。据我所知,曾有人拿这个UID码作为唯一发射码。中间按个做密钥配合加密技术的应用涉及到很专业的内容, ST官方也有不少这方面的培训材料,有兴趣的可以找相关资料进一步了解学习。

相对用的比较多的就是基于该UID设计用户程序的安全启动。其大致原理就是,用户程序第一次运行时将预定的未被改写过FLASH地址写入本芯片UID数据,之后每次启动都会重读UID数据并与特定FLASH地址的内容进行比对,若比对成功则正常运行,否则进入异常处理,不予正常运行程序。一般来讲,编写UID那一步在产品出厂前就完成了。

这里所说的第一次运行,就是指程序运行后,到预定的FLASH地址去读取内容,发现该处是被擦除过且未被改写的数据状态[一般为全1状态],并将UID数据写入相应的FLASH区域,这次运行视为第一次运行。

下面使用STM32L4芯片就上面应用做个简单的代码实现示范,仅供参考。注意,不同STM32芯片在FLASH编程这个地方并不完全一样。

先做些基本的准备工作。

我们根据实际应用程序情况预留出一块地址空间,我在下面示例中将STM32L476RG内部FLASH中间位置抽出1页来存放UID【注:很多STM32系列都具备OTP空间,也可以将UID写在这个区域】。STM32L4的FLASH编程采用双字编程,在给定FLASH编程地址时,注意8字节对齐。到相应的参考手册查找UID的地址及存放情况【即是连续存放还是分散存放】。

准备工作差不多了,就可以尝试组织程序代码了。

由于芯片商在出新的过程中有安全性的考量,使芯片性能越来越完善

程序流程很简单。先判断指定FLASH地址是否为全1,如果是读取当前芯片UID并填写到相应地址;如果不是全1,则读取指定FLASH地址空间内容跟当前芯片UID数据比较,若正确,正常运行程序,若二者不符,则进入异常处理,不正常运行功能代码。

【下面是监测到指定flash地址未被改写过,进入UID内容填充的FLASH编程代码】

由于芯片商在出新的过程中有安全性的考量,使芯片性能越来越完善

【下面是监测到指定flash地址已被改写过,进入比较判断及相应处理的代码】

由于芯片商在出新的过程中有安全性的考量,使芯片性能越来越完善

上面代码是基于STM32L476芯片和STM32L4Cube库而编写的,主要介绍下大致实现过程,简单直观,无须过多解释。

不过,在实际应用过程中,这段功能代码就不要如此直白明了。这里给几点参考建议:

1、代码编写过程中,FLASH地址尽量不要一次性直接给出,最好几经变换后得出;

2、被存放的UID在不破坏唯一性的情况下可以适当做些变换后存放;

3、将这部分代码拆分成几个相互独立而有一定关联的不同函数块来处理。可以考虑将有的功能块放在用户主程序里,有的夹在正常的中断程序里,包括嵌套的中断程序里。

4、用来存放UID的flash地址尽量不要连续,最好在不同功能块访问相应的地址;

5、如果可能,考虑使用两套完全独立的UID改写、比对处理代码。即使用两套FLASH存储区域和比对代码,只有两套都比对成功后才正常运行程序,否则任何一套比对失败都进入保护状态。

因为刚好最近有人谈起这方面的话题,就顺便聊聊上面这些,权作参考。另外,还应该充分利用芯片的读写保护机制以及某些系列已经具有的信息安全保护机制,如PCROP、TrustZone等。还有,我们可以根据自身产品特点设计出一些结合硬件线路、机械组装的特定自检流程,让盗版者在生产加工环节遇到麻烦。这些地方都留给每个设计者大量的发挥空间,来保护自己的知识产权。

总之,关于产品的产权保护,应该从产品规划之初就着手考虑应对方案了,从最早的芯片选型开始,最好回避选用市面上使用过于普遍且老旧的芯片系列。相信芯片商在推陈出新的过程中也有安全性这方面的考量,使得芯片在这方面的性能越来完善和强大。

最后顺便提醒下,当我们的程序监测到发生侵权进入保护状态时,目的是保护自己的产权不受侵害。这个过程中我们可能会对代码采取些行动,阻止其正常运行,但注意不要因此而给第三方带来人身伤害。打个比方,假设你设计的产品是马达控制类交通工具,当发现有人盗版时,如果你在代码里只是简单粗暴地对代码进行破坏而完全不顾破坏后的异常代码可能导致什么后果,那就不妙了。
责任编辑:dhj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47838

    浏览量

    409684
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146729
  • 代码
    +关注

    关注

    30

    文章

    4557

    浏览量

    66864
收藏 人收藏

    评论

    相关推荐

    嵌入式会越来越卷吗?

    以及大数据处理等技术之间的整合与互动可能会越来越密切。这种融合或许会带来更强大的系统和更广泛的应用,但也会带来新的挑战,如数据安全性和系统稳定性等问题。 嵌入式系统的“卷”涵盖了技术、应用和发展等多方面
    发表于 03-18 16:41

    IC datasheet为什么越来越薄了?

    刚毕业的时候IC spec动则三四百页甚至一千页,这种设置和使用方法很详尽,但是这几年IC datasheet为什么越来越薄了,还分成了IC功能介绍、code设置、工厂量产等等规格书,很多东西都藏着掖着,想了解个IC什么东西都要发邮件给供应商,大家有知道这事为什么的吗?
    发表于 03-06 13:55

    精密划片机在电子烟芯片上的应用

    随着电子烟市场的不断扩大,电子烟芯片作为核心部件之一,其质量和安全性也受到了越来越多的关注。为了满足市场需求,提高电子烟芯片的制造效率和品质,精密划片机在电子烟
    的头像 发表于 01-08 16:49 194次阅读
    精密划片机在电子烟<b class='flag-5'>芯片</b>上的应用

    使用LTC4353过程中发现电源切换过程中有周期跌落现象,和什么因素有关?

    我在使用LTC4353过程中发现电源切换过程中有周期跌落现象,不知道和什么因素有关。 下图是我当前的电路,当3.6V18650电池在给负载(200mA)进行供电时,插入另一个4V电源,经常出现电源
    发表于 01-04 07:10

    芯片贸易商未来的路在哪里?越来越卷?

    芯片
    芯广场
    发布于 :2023年12月11日 09:58:30

    汽车功能安全芯片测试

    汽车功能安全芯片测试  汽车功能安全芯片测试是保障汽车安全性能的重要环节,也是汽车产业发展的关键部分。随着汽车智能化技术的不断进步,车辆上搭
    的头像 发表于 11-21 16:10 1160次阅读

    求助,为什么说电气隔离安全性比较高?

    为什么说电气隔离安全性比较高?
    发表于 11-02 08:22

    单片机在以后会越来越趋向于低端化应用吗?

    随着现在的技术和产品功能需求越来越高,好像单片机能完成的事情越来越少;以后是不是嵌入式芯片是主流,单片机渐渐只能在低端上应用?
    发表于 10-24 08:30

    储能电池的充电和放电过程中,如何保证安全性

    为了确保储能电池充放电过程安全性,需要采取这一系列的安全措施。
    的头像 发表于 09-11 14:45 842次阅读
    储能电池的充电和放电<b class='flag-5'>过程中</b>,如何保证<b class='flag-5'>安全性</b>?

    国内首创!通过SDK集成PUF,“芯片指纹”打造MCU高安全芯片

    、CPU、SoC等安全载体,提供安全性、灵活性和成本的最佳组合。 由于芯片指纹”是芯片的固有物理特性,SoftPUF提取生成的PUF标识及
    发表于 09-06 09:44

    STM32H5 MCU系列提升性能与信息安全性

    强大的Arm® Cortex®-M33 MCU运行频率高达250 MHz的Arm®Cortex®-M33内核32位MCU满足绝大多数工业应用的需求安全性可扩展,满足各类需求从基本的安全构建模块到经过
    发表于 09-06 06:29

    S32K144芯片做信息安全开发的过程中芯片始终受到保护,如何解除保护?

    :0x2BA01477 - CoreSight SoC-400 或更早版本 在使用S32K144芯片做信息安全开发的过程中芯片始终受到保护。当出现如上图现象时,是否可以解除保护
    发表于 06-09 06:53

    为什么进口芯片行业越来越难做???

    从上周开始进口芯片的价格成断崖式掉价,是因为国内生产力度下降了嘛,不是都说5月会慢慢恢复生产嘛
    发表于 05-30 10:29

    倒装芯片,挑战越来越

    正在开发新的凸点(bump)结构以在倒装芯片封装中实现更高的互连密度,但它们复杂、昂贵且越来越难以制造。
    发表于 05-23 12:31 750次阅读
    倒装<b class='flag-5'>芯片</b>,挑战<b class='flag-5'>越来越</b>大