深入解析TI bq26100硬件安全认证:从SHA-1/HMAC原理到评估软件实战

📅 2026/7/29 10:27:05 👁️ 阅读次数 📝 编程学习
深入解析TI bq26100硬件安全认证:从SHA-1/HMAC原理到评估软件实战

1. 项目概述与核心价值

在嵌入式系统和物联网设备的设计中,如何确保连接到你主控板上的那个电池包、传感器模块或者通信模组是“正品”而非“山寨货”,是一个既基础又关键的安全问题。想象一下,如果你的智能门锁因为使用了非原厂电池导致认证失败而无法开锁,或者你的医疗设备因为接入了未经验证的传感器而传回了错误数据,后果可能非常严重。这就是硬件安全认证芯片存在的意义——它们像是一个个被严格保管的“数字身份证”,只有持有正确“密钥”的主机才能验证其身份。德州仪器(TI)的bq26100就是这样一款专为电池组和外围设备认证设计的芯片,它内部集成了SHA-1/HMAC算法引擎和一个烧录后不可更改的128位唯一密钥(OTP),构成了一个轻量级但足够可靠的安全堡垒。

我手头这份《bq26100评估软件用户指南》虽然是一份2006年发布、2013年修订的“老”文档,但其揭示的原理和实操流程在今天看来依然极具参考价值。很多工程师在面对这类安全芯片时,往往直接翻阅数据手册研究通信协议,却忽略了厂商提供的评估软件(EVSW)这座“金矿”。这份软件不仅是一个演示工具,更是一个完整的“教学实验室”,它把芯片的认证流程、密钥编程、存储器操作等核心功能,封装成了一个个可视化的操作界面。通过它,你可以绕过底层繁琐的字节操作,直观地理解从密钥注入到完成认证的整个链条,这对于快速原型验证和深入理解SHA-1/HMAC在嵌入式系统中的工作方式至关重要。

本文将带你深入这个“实验室”,我们不仅会一步步拆解评估软件的使用方法,更会聚焦于其背后的SHA-1/HMAC技术原理,以及在实际硬件操作中那些数据手册不会明说的“坑”和技巧。无论你是正在选型安全芯片的嵌入式系统架构师,还是负责实现认证功能的固件工程师,亦或是想深入了解硬件安全机制的学生,这篇文章都将提供从理论到实践的完整路径。你会发现,硬件安全并非遥不可及的黑盒,而是一套有章可循、可被验证的精妙系统。

2. bq26100芯片与SHA-1/HMAC技术深度解析

2.1 bq26100芯片的定位与安全模型

bq26100本质上是一个“从设备认证器”。它的设计目标非常明确:作为一个附着在电池包或外围模块上的从属芯片,向主机(比如手机的主板、电动工具的主控器)证明“我是我,而且我是合法的”。它采用了单线SDQ通信接口,这是一种类似1-Wire的协议,只需一根数据线加地线即可完成通信,极大地节省了布线和连接器成本,非常适合于电池包这种空间和接口都受限的场景。

芯片的安全核心建立在两个基石上:唯一的128位设备密钥SHA-1/HMAC响应算法。每个bq26100在出厂时(或由终端厂商)都会在OTP存储器中烧录一个全球唯一的128位密钥。这个密钥一旦烧录,就无法通过任何电气接口读取出来,实现了物理层面的安全存储。当主机需要认证时,它会向bq26100发送一个挑战消息(Challenge Message)。bq26100则利用其内部的SHA-1/HMAC引擎,用自己的私密密钥对这个挑战消息进行计算,生成一个160位的响应码(Response/Digest)返回给主机。主机因为也拥有(或能通过安全渠道获取)该bq26100的密钥,所以它能用相同的算法和密钥对同一个挑战消息进行运算。如果主机计算出的结果与bq26100返回的结果完全一致,则认证通过;否则,认证失败。

这种模型被称为“挑战-响应”认证。其安全性在于,即使攻击者监听到了所有线上通信(挑战消息和响应码),他也无法反向推导出那个保密的密钥。同时,每次认证使用的挑战消息最好是随机数,这样可以防止“重放攻击”(即攻击者记录一次合法的认证过程并重复发送)。

2.2 SHA-1与HMAC:为何选择这个组合?

评估软件和芯片资料中反复提到的SHA-1/HMAC,是理解其安全性的关键。

SHA-1(安全散列算法1)是一种密码散列函数,它能够将任意长度的输入数据(比如我们的挑战消息),映射成一个固定长度(160位)的、看似随机的输出,称为“消息摘要”或“哈希值”。它的核心特性是:

  • 单向性:从摘要无法反推出原始输入。
  • 抗碰撞性:极难找到两个不同的输入产生相同的摘要。
  • 雪崩效应:输入即使只改变一位,输出的摘要也会发生巨大、不可预测的变化。

然而,单纯的SHA-1并不足以用于消息认证。如果我仅对消息做SHA-1哈希,攻击者可以同时篡改消息和哈希值。因此,我们需要一个密钥

HMAC(基于哈希的消息认证码)正是解决这个问题的标准方案。HMAC并不是一个新算法,而是一种使用密钥和哈希函数(如SHA-1)来构造消息认证码的机制。其运算过程可以简化为:HMAC-SHA1(Key, Message) = SHA1( (Key ⊕ opad) || SHA1( (Key ⊕ ipad) || Message ) )其中,opadipad是固定的常量,||表示拼接,表示异或运算。这个过程确保了最终的认证码(即bq26100生成的160位响应)同时依赖于密钥和消息。不知道密钥,就无法伪造出正确的认证码。

注意:虽然密码学界已发现SHA-1在寻找碰撞方面存在理论上的弱点(即能找到两个不同的输入产生相同的哈希值),但对于HMAC-SHA1在挑战-响应认证这种特定场景下的安全性,目前仍被认为是足够 robust 的,尤其是在资源受限的嵌入式设备中。TI选择这个组合,是在安全性、芯片面积(影响成本)、计算速度之间取得的一个经典平衡。对于新的设计,评估更现代的算法(如SHA-256/HMAC)是必要的,但理解bq26100的方案对于学习硬件安全认证的基本范式依然价值非凡。

2.3 评估软件(EVSW)的桥梁作用

数据手册会告诉你命令码和时序,但评估软件让你“看见”整个过程。它扮演了几个关键角色:

  1. 协议翻译器:它将底层的SDQ字节流协议,封装成了“点击按钮读取ROM ID”、“输入密钥开始认证”等高级操作。
  2. 密钥管理工具:提供了生成和烧录128位密钥到芯片OTP的完整流程,这是产品化过程中最关键也最危险的一步。
  3. 算法验证器:软件端会独立地用你输入的密钥和消息计算一次HMAC-SHA1,并与芯片返回的结果比对,直观地告诉你认证成功与否,这相当于一个实时的算法参考实现。
  4. 存储器编辑器:可以方便地读写OTP和EEPROM,用于配置芯片状态、写入用户数据等。

通过操作评估软件,你能在真正编写一行嵌入式代码之前,就彻底吃透整个认证流程的逻辑和数据流向,避免在开发阶段陷入“芯片没反应-是命令错了还是时序错了还是密钥错了”的调试黑洞。

3. 评估套件硬件连接与配置实操

3.1 套件组成与硬件解读

拿到bq26100评估套件,通常包含三样东西:

  1. bq26100 EVM板(HPA170):这是主角,上面焊接了bq26100芯片及其必要的外围电路,如电平转换、编程电压生成电路等。板子上有清晰的测试点和接口。
  2. PC接口板(EV2300):这是一个通用的TI电池管理芯片评估接口板,通过USB连接电脑,并将USB协议转换为HDQ/SMBus/I2C等协议与EVM板通信。它需要单独购买,是连接电脑和芯片的桥梁。
  3. 软件光盘与文档:包含评估软件安装包和这份用户指南。

仔细看HPA170板的原理图(用户指南中的Figure 1),能学到很多实战细节。例如,芯片的SDQ引脚是开漏输出,需要上拉电阻。板子上通过跳线J4来提供这个上拉。但当使用EV2300时,EV2300内部已经集成了10kΩ上拉电阻,所以必须断开J4,否则会有两个上拉电阻并联,可能影响通信电平。另一个关键跳线是J3,它控制着那个关键的7V编程电压脉冲是否能够施加到SDQ线上。只有在需要烧录OTP(包括密钥和状态字节)时,才需要短接J3

3.2 分步硬件连接指南

连接硬件不是简单的插线,不同的操作模式(正常通信 vs. OTP编程)需要不同的连接方式,接错了轻则通信失败,重则可能损坏芯片。

场景一:仅进行正常通信(读取ID、认证测试、读写EEPROM)这是最常用的模式,用于功能验证和测试。

  1. 连接EV2300与HPA170:使用EV2300套件中提供的彩色杜邦线,按照下表连接:
    HPA170板接口导线颜色EV2300接口
    SDQ棕色HDQ接口的DATA
    VSS(地)黑色HDQ接口的GND
    PROG白色HDQ接口的VOUT
    关键提示:EV2300的HDQ接口可能有一根红线,那是提供3.3V输出的。在bq26100评估中,这根红线必须悬空或用胶带包好,绝对不能连接到HPA170板上,否则可能引入意外电压。
  2. 连接USB与电源:将EV2300通过USB线连接到电脑。此时,HPA170板的主电源(VCC)由EV2300通过SDQ线的上拉电压提供(通常是3V-5V范围)。
  3. 检查跳线:确保J3断开J4断开
  4. 上电:打开评估软件,如果连接正常,软件应能识别到EV2300并可以开始通信。

场景二:进行OTP编程(烧录密钥或状态字节)此模式用于初始化芯片,操作需要格外谨慎,因为OTP一旦写入即无法更改。

  1. 完成场景一的所有连接
  2. 连接7V编程电源:你需要一个可调直流电源。将其正极连接到HPA170板上标有“7V”的端子,负极连接到“VSS”端子。将电源电压精确设置为7.0V,并先关闭输出。
  3. 连接3.3V密钥编程电源(可选但推荐):根据数据手册,在编程密钥时,芯片的PWR引脚需要特定的偏置。HPA170板上的“PWR”测试点就是此引脚。按照指南,你需要另一个电源,输出约3.3V,并串联一个100Ω电阻和一个二极管(如1N4148,正极接电源正)后,再连接到“PWR”测试点。这是一个容易忽略的细节!很多工程师只在烧录普通OTP数据时失败,就是因为没接这个电路。
  4. 设置跳线短接J3。这是让7V脉冲能从PROG引脚进入芯片内部编程电路的关键。J4保持断开。
  5. 上电顺序:先打开3.3V电源(如果接了),再打开7V电源,最后在软件中操作编程。操作完成后,先关闭7V电源,再关闭3.3V电源。

实操心得:硬件连接是第一步,也是最容易出错的一步。我强烈建议在第一次连接时,用万用表仔细测量各点电压。特别是EV2300的VOUT引脚电压,在不同模式下可能不同。确保在连接任何线缆前,所有电源都是关闭的。那个串联二极管的方向千万别接反,否则电流无法流入PWR引脚。养成拍照记录连接方式的习惯,下次搭建时能节省大量时间。

4. 评估软件核心功能详解与实战演练

安装好软件并正确连接硬件后,我们进入核心的软件操作环节。软件界面主要分为四个功能页,对应芯片的四大功能模块。

4.1 ROM CMD页面:与芯片“握手”

这个页面处理SDQ总线协议底层的ROM命令,用于识别总线上的设备。对于单设备系统,操作很简单:

  1. Application部分选择Single Device
  2. 点击Read ROM按钮。
  3. 下方的文本框会显示该bq26100的64位唯一ROM ID(如28 FF 5A 8B 14 16 03 F1)。

为什么需要这个?这个ROM ID是芯片的“序列号”,在多点总线系统中,主机需要用MATCH ROM命令后跟这个ID,来指定与哪一个芯片通信。评估软件的Search ROM功能可以自动扫描总线上所有bq26100的ID并列出。在量产时,主机系统可能需要预先存储或通过某种安全方式获取这个ROM ID,以完成寻址。

4.2 DATA页面:芯片存储器的读写

这是功能最丰富的页面,分为OTP和EEPROM两部分。

OTP(一次性可编程存储器)操作OTP有5页,每页32字节,共160字节。一旦某一位从‘1’编程为‘0’,就再也无法改回‘1’。密钥就存储在这里面的受保护区域

  • 读取:点击Read OTP,软件会逐页读取所有OTP数据并显示在网格中。新芯片的OTP内容通常是全FF(即所有位为‘1’)。
  • 编程
    • 手动编程:直接在网格对应的单元格中点击,输入两位十六进制值(如A5),然后按回车。单元格会变成黄色,表示值已修改但未写入芯片。点击Write OTP按钮,软件会先计算CRC,然后自动控制硬件产生7V脉冲,将数据烧入。这是一个不可逆操作!
    • 文件编程:软件支持导入.otp格式的文件。你可以用文本编辑器打开软件自带的示例文件(如C:\Program Files\EV26100\example.otp),修改其中的数据,然后通过File -> Open OTP File导入。这种方式适合批量写入固定的配置数据。
  • 比对Compare w/File功能非常实用,用于验证烧录进芯片的数据是否与设计文件完全一致,是生产测试中的关键步骤。

EEPROM(电可擦可编程存储器)操作EEPROM只有16字节,可以反复擦写,用于存储一些可能需要更新的信息,比如电池循环次数、校准参数等。其操作方式与OTP类似,但无需高压编程脉冲,通过普通通信命令即可写入。文件扩展名为.eep

注意事项:在编程OTP时,务必确保硬件连接已按“OTP编程模式”配置好(7V电源、J3短接)。软件界面上没有任何“高压危险”的提示,但操作本身具有风险。我曾因为忘记接7V电源就点击Write OTP,导致软件提示“编程失败”,并可能因为异常状态锁死了某些操作。如果遇到奇怪的通信失败,尝试给整个系统完全断电(包括USB)再上电,是个有效的复位方法。

4.3 STATUS页面:锁定与保护

STATUS寄存器本身也是OTP,共8字节。它的主要作用是设置写保护。例如,你可以通过设置相应的位,来永久保护OTP的某一页(如存储密钥的那一页)不被进一步写入。在评估软件中,直接点击Write Protection Bits区域下的按钮(如Protect Page 0),软件会自动计算并写入正确的值。

关键点:这个操作也是OTP编程!点击按钮后,软件会触发完整的OTP写入流程(包括7V脉冲)。所以,在点击这些保护按钮前,请再次确认你是否真的需要永久锁定这些区域。一旦保护生效,对应的存储器区域将再也无法被修改,包括你自己。

4.4 AUTH页面:认证实战

这是整个评估软件的精髓,它完整演示了挑战-响应认证流程。

  1. 输入密钥:在Authentication Key文本框内,输入你想要用于认证的128位密钥(32个十六进制字符)。这个密钥必须与芯片OTP中已编程的密钥完全一致。
  2. 生成并发送挑战消息:点击Generate Random Message,软件会生成一个随机的160位(40个十六进制字符)消息。然后点击Send Message,将此消息发送给bq26100芯片。
  3. 发起认证计算:点击AUTH按钮。这个操作会向芯片的控制寄存器写入一个命令,启动芯片内部的SHA-1/HMAC计算。与此同时,评估软件也在后台使用相同的密钥和消息,独立进行HMAC-SHA1运算。
  4. 比对结果:计算完成后,芯片返回的160位摘要(DIGEST Register)和软件自己计算的结果(PC Generated Digest)会分别显示出来。软件会自动比较两者,并在底部弹出提示框,显示“Authentication Successful”或“Authentication Failed”。

你可以通过修改密钥或消息中的一个字符,直观地看到认证是如何失败的。这个过程清晰地验证了HMAC的特性:密钥或消息的任何微小变动,都会导致最终摘要的天壤之别。

4.5 KEY PGM页面:密钥注入——最关键的步骤

这是产品化过程中最重要的一环,因为密钥一旦注入就无法读取和更改。评估软件提供了两种密钥生成/编程方式:

  • 随机生成(Random):软件生成随机数作为“种子消息”,与芯片内部物理随机源结合,在芯片内生成一个真正的随机密钥。这是最安全的方式,因为密钥在生成过程中从未离开过芯片。你只需要选择是编程密钥的高64位、低64位还是全部128位,然后点击Generate Key成功后,务必立即将下方Generated Key文本框里显示的密钥复制并安全地保存起来!这是你唯一一次看到它的机会。你可以点击Transfer Key将它复制到AUTH页面的密钥输入框,方便立即测试。
  • 用户指定(User Input):你可以自己输入两个64位的消息(Message 0Message 1),芯片会用这些确定性的消息来生成密钥。这种方式适用于需要预先知道密钥值的特定场景,但安全性低于随机生成。

密钥编程的硬件要求最高:必须严格按照“OTP编程模式”连接,特别是那个接在PWR引脚上的3.3V串联二极管电路。编程过程中,软件会先编程密钥,然后自动锁定对应的密钥区(设置STATUS寄存器中的LOCKK0/LOCKK1位)。这是一个安全措施,防止密钥被意外或恶意重写。

5. 常见问题排查与开发经验实录

即使按照指南操作,在实际评估中你仍可能会遇到各种问题。下面是我在多次使用bq26100评估套件中积累的一些典型问题与解决方法。

5.1 通信连接失败

  • 症状:软件启动时提示“USB错误”,或点击任何读取按钮都无反应。
  • 排查步骤
    1. 驱动检查:首先确认EV2300的USB驱动是否已正确安装。可以在设备管理器中查看是否有未知设备或带有感叹号的设备。TI的评估板驱动有时需要手动指定安装。
    2. 电源与跳线:确认HPA170板是否通过EV2300正常供电(测量VCC对VSS应有3V左右电压)。最关键的是检查跳线J4必须断开。如果J4短接,而EV2300内部也有上拉,会导致SDQ线被强上拉,可能使通信电平异常。
    3. 线序检查:反复核对SDQ、VSS、PROG三根线的连接是否正确,接触是否良好。可以用万用表通断档检查。
    4. 芯片型号:极少数情况下,芯片可能已经损坏或处于异常锁死状态。尝试给整个系统完全断电(拔掉USB和所有外接电源)一分钟后再上电。

5.2 OTP编程失败

  • 症状:点击Write OTPGenerate Key后,进度条卡住或提示编程错误。
  • 排查步骤
    1. 7V电源是重中之重:用万用表精确测量连接到“7V”和“VSS”端子上的电压,确保为稳定的7.0V。电源的电流能力不需要很大(100mA足够),但电压必须准确,过低无法触发编程,过高可能损坏芯片。
    2. PROG通路:确认J3跳线已短接。测量PROG引脚在编程瞬间是否有高压脉冲(需要用示波器抓取)。如果没有,检查EV2300的VOUT到HPA170板PROG的白色导线是否连通。
    3. 密钥编程的特殊要求:如果是在KEY PGM页面失败,请务必检查是否为PWR引脚提供了3.3V电源,并串联了100Ω电阻和二极管。这个条件在数据手册和用户指南中都有强调,但很容易被遗漏。
    4. 时序问题:OTP编程对时序有严格要求。评估软件已经处理好了一切,但如果你的7V电源响应太慢或有巨大纹波,可能导致编程脉冲宽度不满足要求。尝试换一个质量更好的线性稳压电源。

5.3 认证始终失败

  • 症状:在AUTH页面,无论怎么尝试,都提示“Authentication Failed”。
  • 排查步骤
    1. 密钥一致性:这是最常见的原因。确保AUTH页面输入的密钥,与通过KEY PGM页面编程并记录下来的密钥完全一致,包括大小写(十六进制字符A-F应大写)。最简单的方法就是使用Transfer Key功能。
    2. 消息同步:确认你点击Send Message后,芯片收到的消息和软件界面显示的消息是一致的。可以通过尝试读取芯片的某个寄存器来验证基本通信是否正常。
    3. OTP保护状态:如果密钥所在的OTP页没有被成功编程,或者STATUS寄存器中的密钥锁定位(LOCKK0, LOCKK1)未被正确设置,可能导致认证计算使用的密钥不是预期值。回到DATA和STATUS页面,检查相关区域的值。
    4. 芯片损坏:在排除所有可能性后,考虑芯片是否在之前的异常操作中损坏。更换一片新的bq26100芯片试试。

5.4 从评估到量产的关键考量

评估软件让我们快速验证了功能,但要将bq26100集成到产品中,还有几个重要的跨越:

  • 主机端算法实现:评估软件在PC上计算HMAC-SHA1用于比对。在你的嵌入式主机(单片机、处理器)上,你需要一个对应的软件算法库。你可以移植一个开源的、经过验证的SHA-1/HMAC实现,或者使用芯片硬件加速模块(如果主控有的话)。
  • 密钥管理:这是安全的核心。在量产中,如何将唯一的密钥安全地注入每一颗bq26100的OTP?如何将对应的密钥和ROM ID安全地交付给主机端(或云端)?这需要一套完整的密钥注入系统和供应链安全管理流程。
  • 通信可靠性:SDQ是单线协议,对时序和干扰比较敏感。在产品设计中,需要确保通信线路远离噪声源,并可能在软件上增加重试和超时机制。
  • 认证流程设计:何时进行认证?上电时?每次通信前?还是定期进行?认证失败后的处理策略是什么(拒绝服务、报警、日志记录)?这需要结合产品的具体应用场景来设计。

通过bq26100评估软件的深度把玩,我们不仅学会了一个工具的使用,更透视了一套经典的硬件安全认证方案。从唯一的密钥存储,到挑战-响应机制,再到SHA-1/HMAC算法的具体应用,这条技术路径在当今众多的安全芯片中依然清晰可见。理解它,就握住了打开硬件安全之门的一把钥匙。