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

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

    关注

    462

    文章

    53534

    浏览量

    459066
  • FlaSh
    +关注

    关注

    10

    文章

    1715

    浏览量

    154701
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73145
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    车规级与消费级芯片的可靠安全性与成本差异

    引言在汽车电子和消费电子领域,"车规级"与"消费级"芯片代表了两种截然不同的设计理念和技术标准。车规级芯片专为汽车应用设计,强调在极端环境下的可靠安全性
    的头像 发表于 11-18 17:27 600次阅读
    车规级与消费级<b class='flag-5'>芯片</b>的可靠<b class='flag-5'>性</b>、<b class='flag-5'>安全性</b>与成本差异

    芯源半导体安全芯片技术原理

    (椭圆曲线加密算法)等。与软件加密相比,硬件加密引擎具有加密速度快、抗攻击能力强的特点,能够快速对数据进行加密和解密操作,保障数据在存储和传输过程中的机密。​ 安全存储区域:芯片内部
    发表于 11-13 07:29

    软包电池测试全指南:性能安全与可靠全面解析

    软包电池作为新能源电动汽车、储能系统以及各类消费电子设备的核心组件,其性能安全性直接影响产品的可靠和用户体验。为了保障电池在使用过程中的稳定性与
    的头像 发表于 11-01 15:25 991次阅读
    软包电池测试全指南:<b class='flag-5'>性能</b>、<b class='flag-5'>安全</b>与可靠<b class='flag-5'>性</b>全面解析

    详解芯片制造中的可测设计

    然而,随着纳米技术的出现,芯片制造过程越来越复杂,晶体管密度增加,导致导线短路或断路的概率增大,芯片失效可能大大提升。测试费用可达到制造成
    的头像 发表于 10-16 16:19 2364次阅读
    详解<b class='flag-5'>芯片</b>制造中的可测<b class='flag-5'>性</b>设计

    请问DM平台访问安全性如何控制?

    DM平台访问安全性如何控制?
    发表于 08-06 06:01

    LED芯片亮,发热量越大,还是芯片暗,发热量越大?

    LED芯片亮,发热量越大,还是芯片暗,发热量越大?遇到这个问题,相信很多人都会认为是芯片
    的头像 发表于 07-21 16:16 705次阅读
    LED<b class='flag-5'>芯片</b><b class='flag-5'>越</b>亮,发热量越大,还是<b class='flag-5'>芯片</b><b class='flag-5'>越</b>暗,发热量越大?

    后摩尔时代:芯片不是越来越凉,而是越来越

    1500W,而在消费领域,旗舰显卡RTX5090也首次引入了液态金属这一更高效但成本更高的热界面材料(TIM)。为什么芯片越来越热?它的热从哪里来?芯片内部每一个晶体管
    的头像 发表于 07-12 11:19 1178次阅读
    后摩尔时代:<b class='flag-5'>芯片</b>不是<b class='flag-5'>越来越</b>凉,而是<b class='flag-5'>越来越</b>烫

    航芯荣获「2025年度芯片安全性能优秀提供商」奖项

    ,航芯凭借其车规级安全芯片优异的市场表现,荣获「2025年度芯片安全性能优秀提供商」奖项。这不仅是对航芯技术实力、产品可靠和市场影响力的肯
    的头像 发表于 06-24 18:21 673次阅读
    航芯荣获「2025年度<b class='flag-5'>芯片</b><b class='flag-5'>安全性能</b>优秀提供商」奖项

    芯片的验证为何越来越难?

    本文由半导体产业纵横(ID:ICVIEWS)编译自semiengineering过去,仿真曾是验证的唯一工具,但如今选择已变得多样。平衡成本与收益并非易事。芯片首次流片成功率正在下降,主要原因
    的头像 发表于 06-05 11:55 734次阅读
    <b class='flag-5'>芯片</b>的验证为何<b class='flag-5'>越来越</b>难?

    概伦电子芯片封装连接验证工具PadInspector介绍

    当今时代人们对产品性能要求越来越高,SoC设计也随之变得越来越复杂,由此导致SoC内模块数量呈指数级增长。不同于传统设计方法,芯片封装设计中的l/O pad配置规划和封装连接
    的头像 发表于 04-22 09:59 715次阅读
    概伦电子<b class='flag-5'>芯片</b>封装连接<b class='flag-5'>性</b>验证工具PadInspector介绍

    物联网设备和应用的安全性

    由于多种原因,安全在物联网和无线连接中变得越来越重要。考虑到这些风险,在设计过程中尽早优先考虑和确定安全要求非常重要。Nordic提供的
    的头像 发表于 03-20 10:49 616次阅读

    芯片可靠测试:性能的关键

    芯片行业,可靠测试是确保产品性能的关键环节。金鉴实验室作为专业的检测机构,提供全面的芯片可靠测试服务,帮助企业在激烈的市场竞争中保持领
    的头像 发表于 03-04 11:50 1179次阅读
    <b class='flag-5'>芯片</b>可靠<b class='flag-5'>性</b>测试:<b class='flag-5'>性能</b>的关键

    当我问DeepSeek:为什么传感器技术越来越重要

    为什么传感器技术越来越重要 我们一起来看看     DeepSeek是怎么说的 为什么传感器技术越来越重要?   传感器:数字世界的感官,智能时代的基石…… 在这个数字化的世界里,
    的头像 发表于 03-01 15:58 672次阅读

    安全芯片LKT4202U产品特点

    在全球安全芯片市场中,我国国产芯片的替代趋势日益明显。随着国内芯片技术的不断进步和产业链的不断完善越来
    的头像 发表于 01-17 11:15 815次阅读

    如何实现 HTTP 协议的安全性

    协议的安全性,可以采取以下几种方法: 1. 使用HTTPS HTTPS(安全超文本传输协议)是HTTP的安全版本,它在HTTP的基础上通过SSL/TLS协议提供了数据加密、数据完整
    的头像 发表于 12-30 09:22 1486次阅读