ZDP14x0系列小技巧-如何实现UID加密安全启动

企业   科技   2024-11-11 11:48   广东  

本文导读

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

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\03.UI_build_project\user_projects\ uid_secret_boot_demo,欢迎下载体验。

资料分享

HMI-ZDP14X0D串口屏开发套件资料持续更新中,需要获取最新资料,可关注如下链接:https://gitee.com/zlgmcuopen/hmi_zdp14x0
如需购买评估套件或与我们交流,可点击下面链接购买硬件或加入技术交流群与我们交流。

购买链接

HMI-ZDP14x0D开发套件已在微商城上架,点击链接即可购买。

技术交流群

如需加入技术交流群,请添加客服微信,我们将邀请您进群,与志同道合的朋友交流,并有专业技术人员为您答疑解惑。

合作咨询

长按识别如下二维码,添加立功科技官方客服。

立功科技

电话|4008882705

芯片与智能物联解决方案供应商

立功科技
芯片与智能物联解决方案供应商
 最新文章