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

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

3天内不再提示

UID加密安全启动原理分析

立功科技 来源:立功科技 2024-11-11 11:49 次阅读

本文导读

ZDP14x0系列芯片是内置开源GUI引擎的图像显示专用驱动芯片,在实际产品开发中需要加密保护,防止应用程序被读取和盗用,本文将介绍如何实现UID加密安全启动。

UID加密安全启动原理

ZDP14x0系列芯片具有64位全球唯一UID,基于UID实现加密可以保证程序移植到另一个芯片无法运行,详细加密启动实现原理如图1。

芯片上电运行,先从加密文件中读取加密数据,然后将加密数据与初始化数据对比是否一致。若一致,表明程序是首次运行,则读取芯片UID并进行加密计算,并将加密数据写入加密文件覆盖初始化数据。若不一致,表明程序已运行过,需要读取芯片UID数据进行加密运算得到加密数据,然后与加密文件的数据进行对比。若数据一致,证明程序与芯片绑定正常,UI正常运行;否则程序异常,报警不运行UI。

图1 UID加密原理

UID接口函数介绍

了解了UID加密安全启动原理,接下来看看UID的接口函数。ZDP14x0 UID分为64位全球唯一UID和64位用户可自定义UID。UID接口函数包括全球UID获取接口、自定义UID获取接口、自定义UID设置接口,需要注意的是自定义UID只能设置一次,锁定后无法修改。

图2 UID接口函数

3个UID接口函数的入口参数都是chip_uid_t类型的结构体,其定义如图3。

图3 chip_uid_t类型结构体

UID加密程序实现

了解了UID加密安全启动原理和UID函数接口,接下来看看安全启动程序的实现,详细程序如图4。

图4 UID加密安全启动程序

程序开始部分定义了初始化数据,加密文件存放的路径,以及一些局部变量。然后从指定目录读取加密文件数据,若文件读取失败则报警提示不往下运行,读取成功则对比是否和初始化数据一致。若与初始化数据一致,则调用加密文件写接口函数,读取UID进行加密并写入加密文件。若与初始化数据不一致,则调用加密文件校验接口函数,与UID加密数据进行对比校验。 加密文件写接口函数实现如图5,调用全球唯一UID读取接口读取UID,读取成功后做加密计算,然后将加密数据写入到加密文件。操作成功则继续运行,否则报警提示。

图5 UID加密安全启动程序

加密文件校验接口函数实现如图6,调用全球唯一UID读取接口读取UID,读取成功后做加密计算,然后与加密文件数据对比。数据一致则继续运行,否则报警提示。

图6 加密文件校验程序

UID加密Demo示例

本UID加密安全启动示例已上传到gitee,在资料中的路径为hmi_zdp14x0�3.UI_build_projectuser_projects uid_secret_boot_demo,欢迎下载体验。

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

    关注

    453

    文章

    50277

    浏览量

    421216
  • 驱动芯片
    +关注

    关注

    13

    文章

    1245

    浏览量

    54402
  • GUI
    GUI
    +关注

    关注

    3

    文章

    641

    浏览量

    39498

原文标题:ZDP14x0系列小技巧-如何实现UID加密安全启动

文章出处:【微信号:立功科技,微信公众号:立功科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LPC1000的UID加密方案

    嵌入式系统产品的加密和解密永远是一对矛盾的结合体。为了保护产品研发人员的技术成果,研究新型加密技术是非常有必要的。这次我们来聊聊使用芯片UID加密的方案。
    的头像 发表于 10-20 14:46 1.2w次阅读
    LPC1000的<b class='flag-5'>UID</b><b class='flag-5'>加密</b>方案

    esp32-c3开启安全启动和flash加密概率不启动是什么原因导致的?

    esp32-c3开启安全启动和flash加密概率不启动,重新上电就好了,启动时候签名校验错误,硬件sha256 返回全0,怀疑是烧efuse
    发表于 06-19 06:42

    MM32 MCU加密方法

    其他更高阶加密手段欢迎咨询灵动技术人员。 我们这里程序加密的目的是防止板子中的程序被他人读出使用,现主要介绍的加密方法有:1、 读保护2、 唯一UID3、 SWD 复用功能重映射4、
    发表于 11-30 17:15

    这些MCU加密方法你都知道吗?

    读取芯片UID并通过同样的密钥和算法进行计算后与Flash中的数值进行比较决定是否启动。其中第一种最容易被破解,第二种也存在潜在风险,为了增强第二种的安全性,可以将加密后的数据拆分后分
    发表于 07-12 15:33

    MCU加密方法你知道多少?

    扇区。程序启动时,首先读取芯片UID并通过同样的密钥和算法进行计算后与Flash中的数值进行比较决定是否启动。 其中第一种最容易被破解,第二种也存在潜在风险,为了增强第二种的安全性,可
    发表于 10-10 14:53

    车规级加密芯片供应,数据加密安全通讯,安全启动方案

    目前物联网以及车联网的发展以及产品的普及,让大家开始注意到了,对于数据加密的需求,开始关于对于数据通信的安全和对于合法用户的认证 深圳市鼎恒创科技专注于固件保护和数据加密传输多年,相关负责人从事
    发表于 11-01 10:38

    在NuMicro™家族中支持UID,如果用户想使用唯一的ID加密芯片怎么操作?

    在NuMicro™家族中支持UID(唯一ID)的是什么系列)? 如果用户想使用唯一的ID加密芯片,该怎么办?
    发表于 12-21 06:45

    uid加密算法

    uid加密算法,1.STM32可以加密程序,不然可能有被窃取的可能JTAG 可以直接通过J-LINK-FLASH获取代码,首先新建工程,型号选好,read back即可save data fileUID
    发表于 07-19 08:23

    STM32F103C8T6是怎样读取加密芯片SMEC98SP的UID号的

    加密芯片SMEC98SP有何功能?STM32F103C8T6是怎样读取加密芯片SMEC98SP的UID号的?
    发表于 11-01 07:21

    如何使用STM32HAL库来读取UID唯一码加密

    如何使用STM32HAL库来读取UID唯一码加密
    发表于 11-26 07:39

    嵌入式平台安全启动的相关资料下载

    ,镜像则无法启动,只有通过身份校验的镜像才可被执行,达到安全启动的作用。加解密秘钥介绍术语明文:原始的消息密文:加密后的明文加密:将明文变为
    发表于 12-17 07:09

    RK3568 SLC-Nand 安全启动文件系统加密问题

    硬件:RK3568 SLC-Nand 512MSDK:rk356x_1.3.0问题: 最近在调试安全启动,以及文件加密时,根据文档,确定安全启动
    发表于 08-26 14:47

    esp32-c3f开启安全启动和flash加密概率不启动的问题如何解决?

    esp32-c3f开启安全启动和flash加密概率不启动,重新上电就好了,启动时候签名校验错误,硬件sha256 返回全0,怀疑是烧efus
    发表于 02-16 06:06

    【野火 fireFlasher Mini 脱机烧录器】+ UID加密及下载次数限制

    ,下载第一次,蜂鸣器响两声,下载第二次同样如此,在下载第三次时蜂鸣器响4声,并且下载亮红灯,并退出下载模式,如下所示 UID加密 通过对 UID 使用特定算法加密,由于
    发表于 05-07 23:33

    【野火 fireFlasher Mini 脱机烧录器】UID加密测试

    移植算法 算法在:野火【fireFlasher Mini脱机下载器】模块资料\\\\UID加密代码资料\\\\对应单独加密代码\\\\YH_Enctyption.zip里 移植完成之后增加测试命令
    发表于 05-13 21:40