• 注册 / 登录
  • 切换到窄版
  • 查看: 1872|回复: 0

    MCU安全启动,安全通信,部件保护

    [复制链接]

    676

    主题

    690

    帖子

    6808

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6808
    发表于 2023-9-28 13:16:21 | 显示全部楼层 |阅读模式

    路线栈欢迎您!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    前言

    MCU上有哪些网络安全相关的技术手段,虽然车载MCU一般不会直接通过网络与互联网连接,但是黑客一旦攻破车载无线通信系统(WIFI,蓝牙等),之后就可以通过CAN网络访问MCU。因此在MCU上使用网络安全措施也是非常有必要的。

    安全启动

    安全启动主要用于MCU启动之后,用户程序执行之前,对用户定义的Flash中的关键程序和程序进行完整性和真实性进行校验。

    0.png

    检查Bootloader的完整性和可靠性,下图展示了如何检测和防止bootloader被篡改。

    1.png

    1. MCU上电之后,CSE模块(CryptographicServicesEngine-加密服务引擎)会从Code Flash读取bootloader。
    2.CSE模块使用bootkey通过AES-128加密算法为bootloader计算出-个MAC值(Message Authentication Code)。
    3.CSE模块比较第2步计算出来的MAC与存储在CSE寄存器中的MAC(该MAC值是刷写bootloader时写入的)是否相同。如果相同,则安全启动认证成功->表示安全启动成功的数据位会被置位并解锁。
    4.黑色箭头处,开始执行bootloader程序。

    安全通信

    下图展示了如何防止非法的消息发送。左侧是主ECU,右侧是传感器ECU,二者通过CAN网络进行通信。

    2.png

    1.主ECU的CSE模块会生成一个随机数并把它发送给传感器ECU。
    2.传感器ECU读取传感器的值,把传感器的值、从主ECU收到的随机数和key #x输入给AES-128加密算法进行加密。
    3.传感器ECU发送加密后的消息给主ECU。
    4.主ECU的CSE模块使用key#x对收到的消息进行解密。
    5.主ECU把解密出来的随机数和自己发送给传感器ECU的随机数进行对比,如果一致则认为该消息是合法的,否则丢弃该消息。

    部件保护

    ECU的替换或篡改会改变它唯一的ID或key,下面的例子将会展示这二者的改变是如何被检测的。

    3.png

    1.主ECU生成一个随机数并把它发送给ECU<n>。
    2.ECU<n>把它自己特有的ID和收到的随机数进行加密(使用key#x),并把加密后的消息发送给主ECU。
    3.主ECU使用key#x对收到的消息进行解密。
    4.主ECU检查解密出来的随机数是否和自己发出去的相一致,解密出来的ID是否和本地存储的ECU<n>的ID相一致。如果二者都一致,则认为ECU<n>正常,否则认为ECU<n>被非法替换或者篡改了。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|路丝栈 ( 粤ICP备2021053448号 )

    GMT+8, 2024-12-22 15:29 , Processed in 0.045809 second(s), 22 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表