本文导读
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,欢迎下载体验。
-
芯片
+关注
关注
455文章
50721浏览量
423170 -
驱动芯片
+关注
关注
13文章
1278浏览量
54592 -
GUI
+关注
关注
3文章
659浏览量
39657
原文标题:ZDP14x0系列小技巧-如何实现UID加密安全启动
文章出处:【微信号:立功科技,微信公众号:立功科技】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论