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

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

3天内不再提示

MCU的调试接口——怎么堵住这个后门?

jf_pJlTbmA9 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2023-10-31 17:02 次阅读

安全调试的前世今生

对于MCU的开发工程师来说,MCU的调试接口是必不可少的开发利器。透过调试接口,我们可以监视MCU的运行状态,查看或修改寄存器的数值,观察内存中的数据变化,通过IDE、调试器等开发工具配合,方便地排查各种棘手的问题。

我们需要了解的一切信息,调试接口都知无不言,言无不尽。

那么问题来了,在产品出厂后,黑客、攻击者就可以利用强大的调试接口对设备进行各种攻击,窃取产品中的敏感信息;黑色产业链也可以通过调试接口,轻而易举地读取出设备的固件,从而生产制造廉价的“破解版”。

正是由于调试接口功能强大,这个开发过程中的利器,也给产品带来了安全的漏洞和知识产权泄露的隐患。

针对这个问题,很多高附加值或安全敏感的产品,会选择在生产过程的最后一步,通过修改OTP Fuse等方式,将调试接口永久地禁掉。产品出厂后,调试接口已被封死,简单粗暴地解决调试接口带来的风险。

但是,产品的售后、维护往往不是一帆风顺的。产品在客户现场,也许会出现各种各样奇奇怪怪的问题。此时,由于调试接口被封掉,留给我们的调试排查手段捉襟见肘,产品出现问题后,难以定位更难以解决。

有没有一种方法,只能让开发者合法地调试芯片,而不会被攻击者利用呢?

Secure Debug安全调试

传统的手段,是将调试接口永远的封死,那么Secure Debug就像是给调试接口加了一把坚固的锁,只有能打开这把锁的人才能使用调试功能。

毫无疑问,“锁”比“封”要更加灵活。那么,我们应该选择使用一把什么样的锁呢?

密码锁

这是一种简单有效的方案,适用于绝大多数芯片。其大致流程如下所示:

pYYBAGIB12KALeooAAE_8QpSNuI579.png

在产品的生产过程中,“解锁密码”提前烧录至芯片的OTP内,然后将调试功能“上锁”,此时调试功能是不可用的。

当需要调试芯片时,芯片会通过JTAG接口发送UUID,这时调试主机根据UUID发送相应的解锁密码,若解锁密码与芯片中预存的密码一致,芯片将会开放调试功能。

可以看到,按照上图的机制,基本可以解决我们上文中提出的问题,这也是目前i.MX RT10xx原生支持的Secure JTAG机制(详情请参考应用笔记AN12419)。

认证锁(Debug authentication)

MCU功能越来越丰富,越来越多的MCU拥有不止一个内核,其中的内核有可能还支持Trustzone。例如LPC5500家族的LPC55S69,拥有Core 0和Core 1两个Cortex M33内核,其中Core 0还支持Trustzone技术。

这同时也对我们的调试安全提出了更多的需求,我们不仅需要一把调试锁控制调试功能的开与关,还需要这把锁足够“聪明”,能够提供更细粒度的权限管理。

例如,我们希望外部攻击者不能调试LPC55S69;某些内部人员只能调试LPC55S69的Core 1,不能调试LPC55S69的Core 0,某些内部人员只能够调试Core 0的非安全区域,某些内部人员可以调试整个LPC55S69……

为了满足灵活的调试权限管理需求,LPC5500提供了一种全新的机制:Debug authentication,利用非对称加密机制(RSA2048/RSA4096),通过证书(DC:Debug Credential Certificate)来授予不同的权限,ODM或设计部门为不同的人员颁发不同的证书,证书中将会明确其所拥有的调试权限。

在调试认证时,芯片会根据某一个人员所持有的证书,对其进行Challenge-Response验证,首先将Response(即DAR:Debug AuthenticationResponse)中的DC与芯片中预置的信息进行匹配,当验证DC为合法后,验证Response中的签名,若证书与签名都验证通过,且请求的调试权限符合芯片的设置,芯片将会开放相应的权限。其大致流程如下所示:

pYYBAGIB12OAG0vnAAIN7XkZULk207.png

可以看出,这种Debug authentication机制解决了调试接口的安全问题,也满足了调试权限灵活管理的需求。

小结

相对来说,Debug authentication需要做的准备工作比较多,本文简单描述了Debug authentication的基本机制,并未提供详细的操作步骤。

如何生成DC/DAR、如何对芯片进行预处理、如何完成一次Debug authentication,请参考应用笔记AN13037,并且NXP提供了开源的工具,参考应用笔记就能够利用工具完成

来源:恩智浦MCU加油站

审核编辑:汤梓红

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

    关注

    453

    文章

    50378

    浏览量

    421678
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16984

    浏览量

    350234
  • 接口
    +关注

    关注

    33

    文章

    8491

    浏览量

    150809
收藏 人收藏

    评论

    相关推荐

    后门密钥验证在S32K142中不起作用怎么解决?

    环境:S32K142、IAR 8.22、多链路调试器 我想在启用安全锁之前测试后门密钥验证。 我像下面这样设置我的程序。 IAR设置 启动.s 只读存储器文件 (SREC) 调试器中的内存转储
    发表于 05-31 08:58

    移植到FPGA上只有一个JTAG接口,进行MCU调试是采用其他扩展引脚定位为MCU的JTAG调试

    移植到FPGA上,只有一个JTAG接口。再进行MCU调试的话,是采用其他扩展引脚定位为MCU的JTAG调试?还是使用FPGA的uart串口
    发表于 08-11 13:41

    MCU51的串口调试工具

    MCU51的串口调试工具:本站会员 gxujjd 及sltian 推荐的Mcu51网站的免费串口调试工具。此版本使用C++Builder编写.
    发表于 01-16 11:53 126次下载

    Kinetis系列MCU调试下载程序方法

    目前Kinetis 系列MCU 家族中的Cortex-M0+仅支持SWD 调试接口,Cortex-M4 支持JTAG、cJTAG 和SWD 调试接口
    发表于 09-23 14:33 45次下载
    Kinetis系列<b class='flag-5'>MCU</b><b class='flag-5'>调试</b>下载程序方法

    AN958:自定义设计的调试和编程接口

    Silicon Labs MCU和无线入门套件以及Simplicity Studio提供强大的开发和调试环境。 为利用自定义硬件的这些功能和特性,Si I icon Labs建议在自定义硬件设计中
    发表于 02-28 15:14 2次下载

    调试接口SWD和JTAG的区别

    作者 | strongerHuang 微信公众号 | strongerHuang 作为嵌入式工程师,下载调试器都应该知道,但你真正了解其SWD 和 JTAG接口的含义和区别吗? 1 什么是下载调试
    的头像 发表于 10-27 09:29 1.7w次阅读
    <b class='flag-5'>调试</b><b class='flag-5'>接口</b>SWD和JTAG的区别

    下载调试接口SWD和JTAG的区别

    作为嵌入式工程师,下载调试器都应该知道,但你真正了解其 SWD 和 JTAG 接口的含义和区别吗? 1、什么是下载调试器 简单来说,下载调试器是将 PC(例如通过 USB 协议)发送的
    的头像 发表于 11-28 11:44 4508次阅读

    如何让MCU调试接口不会被攻击者利用?

    安全调试的前世今生 对于MCU的开发工程师来说,MCU调试接口是必不可少的开发利器。透过调试
    的头像 发表于 12-18 18:06 3028次阅读

    MCU调试接口——怎么堵住这个后门

    对于MCU的开发工程师来说,MCU调试接口是必不可少的开发利器。透过调试接口,我们可以监视
    发表于 02-08 15:09 0次下载
    <b class='flag-5'>MCU</b>的<b class='flag-5'>调试</b><b class='flag-5'>接口</b>——怎么<b class='flag-5'>堵住</b><b class='flag-5'>这个</b><b class='flag-5'>后门</b>?

    基于分割后门训练过程的后门防御方法

    后门攻击的目标是通过修改训练数据或者控制训练过程等方法使得模型预测正确干净样本,但是对于带有后门的样本判断为目标标签。例如,后门攻击者给图片增加固定位置的白块(即中毒图片)并且修改图片的标签为目标标签。用这些中毒数据训练模型过后
    的头像 发表于 01-05 09:23 844次阅读

    Verilog代码封装后门访问

    关于仿真里的后门访问,之前的文章《三分钟教会你SpinalHDL仿真中的后门读写》中有做过介绍,其针对的都是针对以SpinalHDL中的代码进行的后门访问。今天来看看当封装了Verilog BlackBox时,在SpinalHD
    的头像 发表于 07-15 10:22 827次阅读
    Verilog代码封装<b class='flag-5'>后门</b>访问

    STM32 MCU TrustZone开发调试技巧分享

    电子发烧友网站提供《STM32 MCU TrustZone开发调试技巧分享.pdf》资料免费下载
    发表于 07-28 13:35 1次下载
    STM32 <b class='flag-5'>MCU</b> TrustZone开发<b class='flag-5'>调试</b>技巧分享

    【CVM01系列】| MCU硬件设计指南:调试和编程接口

    【CVM01系列】| MCU硬件设计指南:调试和编程接口
    的头像 发表于 09-18 10:56 1073次阅读
    【CVM01系列】| <b class='flag-5'>MCU</b>硬件设计指南:<b class='flag-5'>调试</b>和编程<b class='flag-5'>接口</b>

    无线MCU调试技巧汇总

    无线MCU调试技巧汇总
    的头像 发表于 10-17 14:56 634次阅读
    无线<b class='flag-5'>MCU</b><b class='flag-5'>调试</b>技巧汇总

    调试器连接MCU不稳定怎么办?

    有没有小伙伴遇到使用GDlink或者Jlink调试GD32 MCU的时候出现不稳定的情况,刚要发现问题时调试器和MCU断开连接了,这个时候可
    的头像 发表于 02-21 09:44 874次阅读
    <b class='flag-5'>调试</b>器连接<b class='flag-5'>MCU</b>不稳定怎么办?