首页 > 其他分享 >SemiDrive E3 Secure Debug 理论及验证

SemiDrive E3 Secure Debug 理论及验证

时间:2025-01-15 11:02:46浏览次数:3  
标签:Secure efuse 烧写 调试 SemiDrive Debug JTAG

一. 概述

安全调试(Secure Debug)顾名思义就是调试接口可以被安全管理,可以通过管理,实现只允许合法调试者调试。

二、Secure Debug 理论

E3 的 Secure Debug 根据控制强度,基本分三种控制形式:

① 对于生命周期处于开发模式的芯片,默认使能调试接口;
② 对于生命周期处于量产模式的芯片,根据权限验证开放调试接口,分为 BootROM 控制方式、JTAG Challenge/Response 机制;
③ 强制关闭调试:通过烧写 efuse  的  JTAG_DISABLE  bit 永久关闭调试口。

2.1 BootROM 控制方式

       芯片上电默认先启动 BootROM 程序(芯片启动代码,固化在芯片中),BootROM 根据 boot pin 的设置从 XSPI/eMMC/SD/UART/USB 等介质中获取下级启动镜像,启动镜像的格式必须满足 Boot Package 格式,然后根据 efuse 的配置情况对启动镜像进行安全启动验证,如果启动镜像合法验证,系统将成功启动镜像,表现为程序可以正常启动,具体安全启动流程如下:

  • 计算 BPT 中公钥的 HASH(SHA256)并与 ROTPK1 中保存的 HASH 对比,如果两者不一致,则启动失败;
  • 使用 BPT 中的公钥验证 BPT 中存储的签名,如果签名验证失败,则启动失败;
  • 计算每个 core 镜像 HASH,与保存在 BPT 中的 HASH 对比,如果不一致则启动失败;
  • 上述都成功,则启动 BPT 中所指定的 core 镜像。

       上述过程为常规 BootROM 验证流程,虽然镜像可以正常启动,但在 Secure Debug 时,不代表可以正常打开调试口;若要开启 Debug 调试口,需要将 .json 文件 ctrl 控制字段设置成 0xffffffffffffffff,将 uuid 字段设置成与 efuse DID 字段一致(此字段由用户烧写,注意大小端格式),此过程在 Secure Debug 中非必要过程,Secure Debug 可以不开启 BootROM 验证机制仅采用 JTAG Challenge/Response 机制,对 JTAG 口进行安全调试,详细流程见下图。

2.2 JTAG Challenge/Response 机制

       通过烧写 efuse SDBG_MODE 使能 JTAG Challenge/Response机制,将debugkey 烧写至efuse“e3/SEC_DBG_CFG/0-63bit”, 同时烧写相应的 Lock bit(Lock后软件无法读取该密钥),如果使能了SecureJTAG,只有使用JTAG Challenge/Response机制通过 JTAG 工具提供该密钥,验证成功后打开调试接口,详细流程见下图。

2.3 Fuse Disable 机制

       通过烧写 efuse 中 JTAG_DISABLE bit 位实现,烧写完之后将无法逆转,并且 JTAG_DISABLE 的控制位拥有最高优先级,disable 后将永久无法开启 JTAG 调试口。

三 、Secure Debug 验证过程  

      3.1 烧写 efuse 验证

       3.1.1 生成PAC包

       更改 json 脚本,ctrl 字段为:0xffffffffffffffff,uuid 字段对应 efuse DID 一致,通过 CMD 命令行打包成 PAC 包,并将 PAC 包烧写进 Flash,烧写完固件之后,拨码到 0000 断电重启,确认固件是否正常启动。

       3.1.2 烧写 efuse

       ① 烧写公钥 Hash,执行打包指令时,在 log 区会输出 HASH of Root Cert dump 为公钥 hash,保存并烧写到 efuse -> ROTPK1,具体见下图;

       ② 烧写 DID,需要与生成 PAC 的 JSON 脚本中的 uuid 字段对应,注意大小端对应关系

        ③ 烧写 PROD位,将开启 production 模式,在这个模式下,芯片将无法再被随意烧写,也无法随意连接调试器(只能通过 USB 口进行 PAC 烧写,烧写/读取 efuse)

        ④ 烧写 DebugKey

        ⑤ 烧写 SDBG_MODE 位,开启 Secure Debug 后,板卡上的 JTAG 口被保护,只能通过输入密码的方式重新打开 JTAG 口,(此时虽然 JTAG 口被保护,使用 SDFuseTool 工具以无法通过JTAG 链路链接,仅能通过 USB 链路方式可以读取或烧写efuse)

         ⑥ Lock密钥

  • Bank 后面的序号用于与 LockBank 的序号相对应,即 Bank的锁对应 SafeLockBankX 及APLockBankX
  • Bank 中标识含 [D] 的 fuse 项支持单 bit 从 0 到 1 的修改,没包含此标志的表示的是 ECC 保护功能,仅支持以 WORD 为单位的一次性写入,不支持单 bit 改写
  • LockBank 中的 HLock、OLock、RLock、Plock 含义
    • PLock:置 1 后将不能无法烧写对应 Bank 的 Fuse 内容;
    • RLock:置 1 后软件将无法读取对应 Bank 的 Fuse 内容;
    • OLock:置 1 后无法修改对应 Bank 的 Fuse 的 shadow register 内容;
    • HLock:置 1 后硬件读取对应 Bank 的 Fuse 内容均为 0;

3.2 写寄存器模拟验证

        参考secure debug - 函数方式验证(敬请期待)。

四、Secure Debug 解锁

        参见Secure Debug - 解锁方式(敬请期待)。

五、参考文档

《AppNote_E3_Boot_and_OTA_Rev01.06》

《E3 secure debug V1.0》

《Semidrive_E3信息安全_Rev1.0》

《AppNote_E3_烧录流程_Rev2.0》

《SDToolBox_User_Guide》

欢迎在博文下方留言评论,我们会及时回复您的问题。

如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com   
作者:娜就这么嘀

标签:Secure,efuse,烧写,调试,SemiDrive,Debug,JTAG
From: https://blog.csdn.net/wpgddt/article/details/145155775

相关文章

  • debug小记
    JavacopyProperties方法Spring的BeanUtils不会copy字段名相同但类型不同的属性if(readMethod!=null&&ClassUtils.isAssignable(writeMethod.getParameterTypes()[0],readMethod.getReturnType())){try{if(!Modifier.isPublic(readMethod.getD......
  • 用Ingress生成route,如何让生成route的insecureEdgeTerminationPolicy 的值为Allow
    对于此功能当前还没有实现,相关的新功能添加的Jiraticket如下:Annotatetheingresstocreatetheroutewiththespec.tls.insecureEdgeTerminationPolicysettoAllow目前已经实现的功能:apiVersion:networking.k8s.io/v1kind:Ingressmetadata:annotations:......
  • idea系列---【idea中的Debug常用功能】
    idea中的Debug常用功能1.方法断点(打在方法上的断点(菱形)):适用场景:当一个接口有多个实现类时,在接口的方法上打个断点,执行到这个方法的时候,就会自动进入使用的实现类的方法里的第一行,可以帮我们快速定位使用的哪个实现类。2.字段断点(打在字段上(眼睛形)):适用场景:观察字段的值被......
  • SecureCRT v9.5.2 for Mac SSH终端操作工具 安装
    SecureCRTv9.5.2forMacSSH终端操作工具安装SecureCRTMac破解版是一款SSH终端工具,为计算专业人士提供高级会话管理工具。也是一个功能强大且值得信赖的基于GUI的SHH和Telnet客户端,以及旨在提高工作效率并简化重复任务的终端仿真器。借助SecureCRTmac版的帮助,您可以通过对AN......
  • SecureFX for Mac FTP/SSH传输工具
    SecureFXforMacFTP/SSH传输工具SecureFXmac破解版是一款Mac平台的FTP/SSH传输工具。SecureFXforMac支持三种文件传输协议:FTP、SFTP和FTPoverSSH2。它可以提供安全文件传输。无论您连接的是任何一种操作系统的服务器,它都能提供安全的传输服务。它主要用于Linux操作系统......
  • 开发微信小程序游戏,有没有类似Debug真机图形的方法
    1)开发微信小程序游戏,有没有类似Debug真机图形的方法2)Unity中如何实现动态实时的车削效果3)动态创建的Texture,有什么办法可以让他保持ASTC么4)Unity转微信小游戏的日志问题这是第416篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更......
  • DVWA靶场Insecure CAPTCHA(不安全验证)漏洞所有级别通关教程及源码审计
    目录InsecureCAPTCHA(不安全验证)low源码审计medium源码审计high源码审计impossible源码审计InsecureCAPTCHA(不安全验证)InsecureCAPTCHA(不安全验证)漏洞指的是在实现CAPTCHA(完全自动化公共图灵测试区分计算机和人类)机制时,未能有效保护用户输入的验证信息,从......
  • SecureCRT & SecureFX 9.6.1 for macOS, Linux, Windows - 跨平台的多协议终端仿真和
    SecureCRT&SecureFX9.6.1formacOS,Linux,Windows-跨平台的多协议终端仿真和文件传输请访问原文链接:https://sysin.org/blog/securecrt-9/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSecureCRT客户端运行于Windows、Mac和Linux,将坚如磐石的终......
  • DVWA靶场Insecure CAPTCHA(不安全验证)漏洞所有级别通关教程及源码审计
    InsecureCAPTCHA(不安全验证)InsecureCAPTCHA(不安全验证)漏洞指的是在实现CAPTCHA(完全自动化公共图灵测试区分计算机和人类)机制时,未能有效保护用户输入的验证信息,从而使得攻击者能够绕过或破解该验证机制。这类漏洞通常出现在网络应用程序中,目的是防止自动化脚本(如机器人)对网......
  • 使用 SecureCRT6.5连接新安装的ubuntu24.04时提示No compatible hostkey
    使用SecureCRT6.5连接新安装的ubuntu24.04时提示NocompatiblehostkeyKeyexchangefailed.Nocompatiblekeyexchangemethod.Theserversupportsthesemethods:sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp25......