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

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

    关注

    452

    文章

    50150

    浏览量

    420513
  • FlaSh
    +关注

    关注

    10

    文章

    1613

    浏览量

    147642
  • 代码
    +关注

    关注

    30

    文章

    4717

    浏览量

    68199
收藏 人收藏

    评论

    相关推荐

    UWB模块的安全性评估

    UWB(超宽带)模块的安全性评估是一个复杂而关键的过程,涉及多个方面,包括技术特性、加密机制、抗干扰能力、物理层安全等。以下是对UWB模块安全性评估的分析: 一、技术特性带来的
    的头像 发表于 10-31 14:17 91次阅读

    智能系统的安全性分析

    )和非对称加密(如RSA)等技术,确保数据在存储和传输过程中的机密。 加密算法应经过广泛验证和测试,以确保其安全性和可靠。 数据完整
    的头像 发表于 10-29 09:56 147次阅读

    云计算安全性如何保障

    。无论是数据传输过程中还是存储时,都应确保数据的机密。 传输加密 :在数据传输过程中,云服务提供商通常会采用传输层安全协议(TLS)等加密技术,以防止数据在传输中被截获或篡改。 存储
    的头像 发表于 10-24 09:14 149次阅读

    无线充芯片-手机无线充电芯片-无线充电芯片开发定制

    基于需求信息,进行无线充电芯片的技术研发与创新。这包括芯片架构设计、电路布局优化、算法开发等方面的工作。在研发过程中,需要充分考虑高效能量传输、兼容与互操作
    发表于 09-27 11:32

    QC快充芯片,因高效而兼容好而成为手机标配的充电解决方案!

    的充电控制方式,不仅提升了充电效率,还确保了充电过程安全性和稳定性。 3. 广泛的兼容: 随着QC快充技术的普及,越来越多的设备开始支持QC快充协议。这使得QC快充
    发表于 09-26 10:03

    CANFD芯片应用中关键功能和性能指标分析

    ​CAN FD芯片通信速率高达5Mbps,需要线缆少传输距离较远,在汽车、工业、宇航、能源等领域应用越来越广。 1)汽车工业:汽车内部电子系统日益复杂,需要高速、可靠的数据传输来确保车辆的安全
    发表于 09-14 10:58

    蓝牙模块的安全性与隐私保护

    蓝牙模块作为现代无线通信的重要组成部分,在智能家居、可穿戴设备、健康监测等多个领域得到了广泛应用。然而,随着蓝牙技术的普及,其安全性和隐私保护问题也日益凸显。本文将探讨蓝牙模块在数据传输过程中
    的头像 发表于 06-14 16:06 456次阅读

    嵌入式会越来越卷吗?

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

    我们该如何应对SOC中越来越庞大和复杂的SDC约束?

    SOC设计变得越来越复杂,成本越来越高,设计和验证也越来越困难。
    的头像 发表于 03-13 14:52 1033次阅读
    我们该如何应对SOC中<b class='flag-5'>越来越</b>庞大和复杂的SDC约束?

    IC datasheet为什么越来越薄了?

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

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

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

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

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

    汽车功能安全芯片测试

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

    汽车钥匙越来越“全能”,它背后的安全问题该如何应对?

    今天,一个小小的汽车遥控钥匙除了门禁的功能,还被赋予了越来越多的角色,从汽车共享到免接触支付,从身份认证到电子票据,不一而足。你是否考虑过,如此多的功能,它们的安全该如何保证? 别急,恩智浦
    的头像 发表于 11-17 08:10 394次阅读
    汽车钥匙<b class='flag-5'>越来越</b>“全能”,它背后的<b class='flag-5'>安全</b>问题该如何应对?

    低功耗IC在智能家居应用越来越广泛 CS5010应用在哪些领域?

    有效地提升产品的性能和续航能力,同时也能提高产品的安全性和可靠。 在这些低功耗芯片中,CS5010是一款非常优秀的芯片,它的静态电流低至2
    的头像 发表于 11-12 15:06 356次阅读
    低功耗IC在智能家居应用<b class='flag-5'>越来越</b>广泛 CS5010应用在哪些领域?