一、JTAG口信息安全相关要求
车载信息安全中对车载ECU有隐藏调试口接口要求
PCB所使用的芯片不能存在可以非法对芯片内存进行访问或者更改芯片功能的隐藏接口。芯片在设计阶段使用的调试接口应在上市产品中禁用。
具体可选措施如下:
1.硬件上取消调试连接器(可保留焊盘),并在调试口设置访问密码,有设备连接调试接口后,先完成密码验证后才能继续接收指令。访问密码需设置为强密码
2.硬件上取消调试连接器和焊盘,无调试通道
3.PCB灌胶处理,无可调试通道
二、JTAG口相关简介
1.JTAG功能和使用场景
在汽车电子控制单元(ECU)开发和生产中,JTAG接口被广泛应用于以下功能,通常车载MCU和SOC均含有JTAG引脚:
a.芯片烧录(Bootloader、固件);
b.调试和故障诊断
c.生产线相关功能
2.JTAG口为什么要做防护
JTAG口为我们的开发、生产阶段均带来了不可替代的作用,然而,JTAG口同样也是高危攻击入口:
a.攻击者可通过JTAG口读取固件、提取秘钥、篡改逻辑等;
b.若JTAG口味在量产后禁用且未做防护将成为‘后门’;
c.即使物理禁用,开发/维修阶段仍需具备一定的使用性,且需要注意权限失控风险
3.JTAG口安全防护需求:如何做到“用时安全、用完即锁、全程可控”?
常见车企需求,需满足以下安全目标:
1.JTAG默认禁用:量产时出厂时JTAG锁死
2.授权时可启用 如仅限产线、4s店在特定场景下可临时开启
3.需密匙保护 JTAG口开启指令需加密
4.操作有记录,留有痕迹 如开启JTAG口需记录相关安全日志
5.符合车企相关规范,标准
二、设计方案
1.针对SOC最常见方案可在量产阶段取消JTAG口相关测试点,软件即可不用做相关防护
2.针对MCU此类芯片,因量产后也可能存在批量刷写boot/app可能性,需保留JTAG测试点
加密方案:
常见方法:将JTAG烧录的引脚 SWD_CLK引脚在程序跳转到app初始化完成后复用为普通IO口,此状态下(app正常)不能使用JTAG/SWD口访问MCU。
解密方案:
a. 在app中使用can/doip相关协议在需要解密的时候,发送一个解密命令将SWD_CLK引脚复用为SWD烧录功能,此状态下可以进行程序烧录和访问。
b.在MCU启动还未跳转到app中进行加密动作前也可以访问debug,当debug连接上后可以烧录程序。(在boot状态下可以debug和程序烧录)。
注:
出货状态设备解密需先通过doip协议经过27认证后发送开启JTAG口指令
2. 解密后,重新上电即重新加密,或者发送加密指令加密
三、测试用例设计
1. JTAG口加密验证 -Boot阶段JTAG/SWD可访问性测试
Jlink烧录mcu版本程序中boot程序至mcu中(擦除app中数据,仅烧录boot),上电后,连接调试器至MCU的SWD接口,尝试读取MCU的寄存器内容 ——预期可正常访问,并可进行烧录
2. JTAG口加密验证 -app阶段JTAG/SWD可访问性测试
Jlink烧录mcu版本程序中app程序至mcu中,上电后,连接调试器至MCU的SWD接口,尝试读取MCU的寄存器内容 ——预期无法正常访问,并无法继续进行烧录 (重试3次上电,均无法访问、连接)
3.JTAG口加密验证 -解密命令生效测试
通过doip关闭防火墙,通过以太网口发送私有协议解密,通过连接调试器至MCU的SWD接口,尝试读取MCU的寄存器内容 ——预期可正常访问,并可进行烧录
4.JTAG口加密验证 -解密后重新加密测试
解密后通过mcu can口发送11服务复位指令,观察mcu 重新跳转至app并初始化,通过连接调试器至MCU的SWD接口,尝试读取MCU的寄存器内容 ——预期无法正常访问,不可进行烧录
5.JTAG口加密验证 -非法解密指令
通过doip发送指令解密,通过连接调试器至MCU的SWD接口,尝试读取MCU的寄存器内容 ——预期无法正常访问,并不可进行烧录
验证5组以上密码指令
6.JTAG口解密验证 -记录安全日志
通过doip发送指令解密,查看对应安全日志是否正常记录
6.加密状态下app稳定性验证
mcu在加密状态app正常运行 (挂机7天无异常死机,外发报文无异常,未产生异常故障码)
7.边界条件测试 —上电过程中连接调试器
上电前连接好接口,并在上电过程中点击JLINK连接,尝试10次,查看是否能连接成功
8.白盒测试 ——测试mcu相关引角功能
9.Boot升级异常——连接状况 期望能正常连接jtag
升级错误boot程序,重新上电后查看,连接调试器至MCU的SWD接口,尝试读取MCU的寄存器内容 ——预期可正常访问,并可进行烧录
10. Boot app 均烧录正确程序后,app正常加密后异常后触发看门狗 (同测试点7)