ZHCAEP3 November   2024 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2需要全面的安全方法
  6. 3加密功能
    1. 3.1 加密和解密
    2. 3.2 哈希、数字签名和身份验证
    3. 3.3 随机数发生器 (RNG)
  7. 4建立信任根
    1. 4.1 机密的安全存储
    2. 4.2 保持密钥和代码安全性
    3. 4.3 安全启动
  8. 5安全执行环境
  9. 6安全对策
  10. 7调试安全性
  11. 8结语

哈希、数字签名和身份验证

除了加密和解密外,安全系统还必须能够确认器件上存储的代码和数据资产的完整性。哈希算法支持这一目标,将任意长度的代码或数据块简化为独特的固定长度摘要。如果不使用密钥,加密哈希函数始终会为同一输入生成相同的输出摘要,并具有几个可确保其安全的重要属性:

  1. 推导出用于计算给定哈希值的原始输入字符串是非常不可行的。
  2. 对于原始报文,修改该报文的方式与原始报文产生相同的哈希值是非常不可行的。
  3. 加密哈希函数不受冲突影响,这意味着两个不同的输入很难生成相同的输出。
  4. 此外,输入的任何更改(即使是 single-bit)都会导致输出发生大幅变化。这一过程称为雪崩效应。

通过计算要引导的身份验证证书或存储代码上的哈希摘要,并将其与已知参考进行比较,系统可以确认代码或数据自创建以来未被修改。安全哈希算法 (SHA) 和消息摘要 5 (MD5) 是常用哈希函数的示例。不建议使用 SHA-1 和 MD5 算法,因为已针对这些函数证明了成功的冲突攻击。可以改用 SHA-2 和 SHA-3 算法来提供强大的哈希函数。哈希摘要的长度与函数的加密强度有关。所有内容都相等,较长的摘要更安全,但代价是计算时间增加。

 代码加密和数字签名示例图 3-1 代码加密和数字签名示例

非对称算法可用于使用私钥从消息创建数字签名。数字签名可用于确认已签名消息的完整性和真实性。但是,非对称算法比哈希函数慢得多。因此,通过解决大量数据的计算时间问题,哈希算法与非对称算法结合使用时效果很好。首先可以计算块的安全散列,而不是对整个块签名。然后使用发送方的私钥对生成的输出哈希摘要进行签名。接收方使用发送方的公钥反转此过程,计算接收到的数据块的哈希值,并根据原始哈希值对其进行身份验证。此过程可确定数据的完整性和真实性,同时节省计算时间,通常称为数字签名。这些项目通常与其他重要元数据一起存储在数字证书中,使用业界通用格式(如 X.509)。此过程对于出厂配置和固件更新至关重要,后续章节将对此进行讨论。

 身份验证和解密示例图 3-2 身份验证和解密示例

加密身份验证方案还可用于应用本身,以实现运行时安全,验证在器件之间传输的数据的完整性和真实性。使用密钥、消息身份验证代码或 MAC 通过加密算法进行计算,然后附加到发送给接收器的消息中。然后,接收方可以使用相同的密钥和算法根据接收的消息计算 MAC,并将其与发送方发送的消息进行比较。如果两个代码匹配,则验证消息为真实且未更改。

两种最常用的加密身份验证方案是 CMAC 和 HMAC。CMAC 表示基于密码的消息身份验证代码,基于对称算法(如 AES)。HMAC 表示带密钥的哈希消息验证码,使用 SHA-256 等哈希函数。在为电子控制单元(即 ECU)之间传输的数据采用 AUTOSAR 安全车载通信 (SecOC) 架构的现代汽车系统中,可以找到加密消息身份验证的示例。SecOC 使用 CMAC 对通过车辆网络(如 CAN、FlexRay 或以太网)传输的网络消息提供端到端保护。在 SecOC 架构中,每个消息帧都包含一个安全标头和标尾,其中包含 MAC 和其他安全元数据。每个 ECU 都可以使用 MAC 来验证接收到的每个消息,共享密钥可以由中央主机管理和定期分发以保持新鲜度。此类方案可用于防范汽车窃贼经常使用的 CAN 注入等攻击方法。