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

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

3天内不再提示

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

璟琰乀 来源:嵌入式资讯精选 作者:嵌入式资讯精选 2020-12-18 18:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

安全调试的前世今生

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

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

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

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

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

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

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

Secure Debug安全调试

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

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

密码锁

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

在产品的生产过程中,“解锁密码”提前烧录至芯片的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中的签名,若证书与签名都验证通过,且请求的调试权限符合芯片的设置,芯片将会开放相应的权限。其大致流程如下所示:

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

小结

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

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

责任编辑:haq

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

    关注

    463

    文章

    54441

    浏览量

    469425
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19134

    浏览量

    404067
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux系统中常见的提权风险点总结

    Linux 提权(Privilege Escalation)是指攻击者或恶意用户从低权限账号获取更高权限的过程。在实际的安全事件中,攻击者很少能直接获得 root 权限,更多的情况是首先通过某个漏洞或配置错误获得普通用户权限,然后通过各种提权技术获得 root 权限。
    的头像 发表于 04-22 10:34 288次阅读

    艾体宝方案|APT攻击下USB安全风险解析及企业防御体系构建

    APT(高级持续性威胁)组织,尤其是国家级黑客的核心突破点。这并非攻击技术的倒退,而是攻击者针对企业安全体系短板,进行的攻击路径升级与战术调整。
    的头像 发表于 04-15 10:35 150次阅读

    NETSCOUT揭示DDoS攻击在复杂程度、基础设施容量和威胁主体能力方面的质变

    NETSCOUT® SYSTEMS, INC. (NASDAQ: NTCT)今日发布《2025年下半年分布式拒绝服务(DDoS)威胁情报报告》。报告揭示,攻击者的精密协作、高韧性僵尸网络和被入侵的物
    的头像 发表于 03-05 16:19 226次阅读

    8位MCU会被市场所淘汰吗?

    科技的飞速发展制造了一种错觉:性能更强的32位MCU终将淘汰8位MCU。 然而,Silicon Labs(芯科科技)产品经理 Jayant Jyoti 近期的一番行业洞察指出:8位与32位MCU不是
    的头像 发表于 02-24 14:04 484次阅读
    8位<b class='flag-5'>MCU</b><b class='flag-5'>会被</b>市场所淘汰吗?

    开发必备:嵌入式常用外设接口电路参考指南

    在嵌入式开发中,硬件接口电路设计是每位工程师都绕不开的环节。不同的外设接口有各自的电气特性和设计要求,理解常见接口的参考电路可以你的开发更稳健,避免
    的头像 发表于 01-09 19:03 904次阅读
    开发<b class='flag-5'>者</b>必备:嵌入式常用外设<b class='flag-5'>接口</b>电路参考指南

    什么是零日漏洞?攻防赛跑中的“时间战”

    在软件安全领域,零日漏洞始终是最高级别的威胁之一。“零日”意味着漏洞在被公开之前就已经被攻击者发现并利用。一旦曝光,攻击者往往在数小时内便会发动袭击。在这场和黑客“抢时间”的对抗中,IT团队必须
    的头像 发表于 01-07 16:59 886次阅读
    什么是零日漏洞?攻防赛跑中的“时间战”

    分析嵌入式软件代码的漏洞-代码注入

    随着互联网的发展,嵌入式设备正分布在一个充满可以被攻击者利用的源代码级安全漏洞的环境中。 因此,嵌入式软件开发人员应该了解不同类型的安全漏洞——特别是代码注入。 术语“代码注入”意味着对程序的常规
    发表于 12-22 12:53

    HarmonyOS应用代码混淆技术方案

    代码混淆技术可以增加代码的复杂性和模糊性,从而提高攻击者分析代码的难度。
    的头像 发表于 11-21 16:17 5734次阅读
    HarmonyOS应用代码混淆技术方案

    芯源半导体在物联网设备中具体防护方案

    到异常后,立即擦除存储的支付密钥和设备身份信息,保护用户支付安全和设备身份安全。​ 防调试与防篡改:安全芯片具备防调试功能,防止攻击者通过调试接口
    发表于 11-18 08:06

    攻击逃逸测试:深度验证网络安全设备的真实防护能力

    中一种极具威胁性的高级攻击手法。攻击者通过精心构造恶意流量,使其能够成功绕过各类安全设备的检测机制,实现“隐身”攻击。这种攻击不仅隐蔽性强,而且技术复杂度高,能有效规避传统安全设备的检
    发表于 11-17 16:17

    GCC编译器,怎么才能实现c文件中未被调用的函数,不会被编译呢?

    GCC编译器,怎么才能实现c文件中未被调用的函数,不会被编译?有什么编译选项可以设置吗? 移植代码,有些函数没被调用的函数想留在代码里,但不想被编译,编译的话报错报警告啥的太多了,而且编译起来也慢。 谢谢!
    发表于 09-28 12:25

    Ansible Playbook自动化部署Nginx集群指南

    面对日益猖獗的DDoS攻击,手动部署防护已经out了!今天教你用Ansible一键部署具备DDoS防御能力的Nginx集群,攻击者哭着回家!
    的头像 发表于 08-06 17:54 916次阅读

    智多晶XSBERT高速串行接口调试化繁为简

    高速串行接口(如PCIe、以太网、HDMI等)是芯片设计的“高速公路”,但调试过程却常人抓狂——信号质量差、误码率高、眼图模糊……耗时耗力的测试流程,是否你无数次想对屏幕喊“太难了
    的头像 发表于 05-30 14:30 1233次阅读
    智多晶XSBERT<b class='flag-5'>让</b>高速串行<b class='flag-5'>接口</b><b class='flag-5'>调试</b>化繁为简

    有办法SDK 1.3.5与JTAG调试器配合使用吗?

    .... 的 DIE 引用的位于 0x0 的 DIE 调试器停止在主界面。 之后,如果我继续执行(运行),调试器就不再响应--不会在任何断点处停止,也不允许暂停。 我只能终止调试会话
    发表于 05-23 07:32

    RISC-V JTAG:开启MCU 芯片调试之旅

    在当今电子科技飞速发展的时代, MCU 芯片成为众多企业追求技术突破与创新的关键领域。而芯片的调试过程则是确保其性能与可靠性的重要环节。本文以国科安芯自研 AS32A601为例,旨在详细记录
    的头像 发表于 05-07 17:57 3000次阅读
    RISC-V JTAG:开启<b class='flag-5'>MCU</b> 芯片<b class='flag-5'>调试</b>之旅