MUNIK解读ISO21434专题分享(9):安全子系统设计

—原创文章,文章内所有内容文字资料,版权均属本公众号所有,任何媒体、网站、公众号或个人未经Munik公司授权不得转载、转贴、引用或以其他方式复制发布 、发表。已经被Munik公司授权的媒体、网站、公众号、个人,在下载使用时必须注明来源,违者Munik公司将依法追究相关责任.

回到本文的源头文章“ISO21434标准解读”,请点击链接:ISO 21434 Automobile Cyber Security汽车网络安全服务

回到知识分享,请点击链接:MUNIK中国-技术分享

【常见的网络安全措施】

在汽车网络安全开发过程中,实施有效的网络安全措施是确保子系统安全的关键。以下是一些常见的网络安全措施,这些措施可以在不同的开发阶段应用,以应对各种潜在的网络安全威胁和风险:

1)硬件安全:为保护MCU与关键存储芯片之间通信线路,防止敏感信息泄露,对硬件提出安全措施,例如去除芯片丝印、芯片使用BJA封装、根据是否有网络安全需求使用不同接插件等;

2)安全诊断:为确保诊断仪和ECU之间的身份认证,通常采用X.509证书、随机数挑战响应等配合2729服务使用;

 

图1 安全诊断—在线模式图

 

3)安全更新:为保护ECU软件更新包/固件更新包的真实性和完整性,通常在预刷新阶段验证更新包的真实性,在后刷新阶段验证刷写包的完整性;

 

图2 安全刷新— 组成结构图

 

4)安全调试:为保护调试接口,通常对调试接口采取封闭、增加访问密钥、打散调试接口引脚等措施;

5)安全启动:通常在ECU启动期间,对加载代码的真实性和完整性进行串行或并行的检测;

 

图3 安全启动—HSMHost交互图

 

6IDS(入侵检测系统):为检测网络通信是否遭到入侵,采用入侵检测系统检测网络通信过程,若检测到入侵,则记录异常信息;

 

图4 入侵检测系统方案图

 

7)安全日志:在ECU的生命周期内,记录关键数据(如IDS检测到异常信息、安全刷写/诊断/启动/通信失败等);

8)安全通信:为保护车内网络通信的完整性、真实性、抗重放性,采用安全通信机制例如SecOC,在需要保护的报文中增加新鲜度值、身份认证信息等;

 

图5 SecOC方案图

 

9)安全存储:将密钥、证书、敏感信息等关键数据存储于可信的安全环境(HSM)。

【安全启动的基本概念】

本次推文将围绕着安全启动常见的网络安全规范和设计跟各位读者做一个简单的介绍。

1. 安全启动的基本概念

  • 信任链:安全启动通过建立一条信任链,从硬件根信任开始,逐步验证每个启动阶段的固件和软件。
  • 数字签名:使用数字签名来验证固件和软件的完整性和真实性,确保只有经过签名和验证的代码才能执行。

2. 常见的安全启动规范

  • UEFI Secure Boot:统一可扩展固件接口(UEFI)规范中的安全启动功能,广泛应用于现代计算设备中。UEFI Secure Boot使用数字签名和证书来验证启动加载程序和操作系统内核。
  • TPMTrusted Platform ModuleTPM是一种硬件模块,用于存储加密密钥和执行加密操作。TPM可以用于实现安全启动,通过存储和验证启动过程中的关键数据。
  • NIST SP 800-147:美国国家标准与技术研究院(NIST)发布的《BIOS保护指南》,提供了保护BIOS免受篡改的安全措施和最佳实践。
  • FIPS 140-2:联邦信息处理标准(FIPS140-2是一个加密模块的安全认证标准,确保加密模块的安全性和可靠性。

3. 安全启动的设计原则

  • 硬件根信任:使用硬件根信任(如TPM或硬件安全模块)作为信任链的起点,确保启动过程的安全性。
  • 固件和软件签名:对固件和软件进行数字签名,使用公钥基础设施(PKI)来管理和验证签名。
  • 验证和度量:在每个启动阶段对固件和软件进行验证和度量,确保其未被篡改。
  • 密钥管理:安全地管理和存储加密密钥,确保密钥的机密性和完整性。
  • 更新和补丁:提供安全的固件和软件更新机制,确保能够及时修复已知的安全漏洞。

4. 安全启动的实现步骤

 

图6 信任根图

 

  1. 硬件根信任初始化:在系统启动时,硬件根信任(如TPM)初始化并加载根信任密钥。
  2. 固件验证:硬件根信任验证固件的数字签名,确保固件的完整性和真实性。
  3. 启动加载程序验证:固件加载并验证启动加载程序的数字签名,确保启动加载程序的完整性和真实性。
  4. 操作系统内核验证:启动加载程序加载并验证操作系统内核的数字签名,确保内核的完整性和真实性。
  5. 驱动程序和应用程序验证:操作系统内核加载并验证驱动程序和关键应用程序的数字签名,确保其完整性和真实性。

5. 安全启动的常见使用的算法

  1. 哈希算法:用于生成固定长度的哈希值,以验证数据的完整性。常见的哈希算法包括:
  • SHA-256Secure Hash Algorithm 256-bit):广泛使用的哈希算法,提供256位的哈希值。
  • SHA-384  SHA-512提供更高安全性的哈希算法,分别生成384位和512位的哈希值。
  1. 对称加密算法:对称加密算法用于加密和解密数据,虽然在安全启动中不如非对称加密算法常见,但在某些情况下也会使用。常见的对称加密算法包括:
  • AESAdvanced Encryption Standard):一种高效且安全的对称加密算法,支持128位、192位和256位密钥长度。
  1. 非对称加密算法:非对称加密算法用于生成和验证数字签名,是安全启动的核心。常见的非对称加密算法包括:
  • RSARivest-Shamir-Adleman):一种广泛使用的非对称加密算法,支持多种密钥长度(如2048位和4096位)。
  • ECCElliptic Curve Cryptography):一种基于椭圆曲线数学的非对称加密算法,提供与RSA相同安全级别的同时使用更短的密钥长度(如256位)。
  1. 数字签名算法:用于生成和验证数字签名,以确保数据的完整性和真实性。常见的数字签名算法包括:
  • RSA签名:使用RSA算法生成和验证数字签名。
  • ECDSAElliptic Curve Digital Signature Algorithm):基于椭圆曲线的数字签名算法,提供高效的签名和验证过程。
  1. 密钥管理:密钥管理在安全启动中至关重要,常见的密钥管理技术包括:
  • TPMTrusted Platform Module):一种硬件模块,用于安全地存储和管理加密密钥。
  • HSMHardware Security Module):专用硬件设备,用于生成、存储和管理加密密钥。

6. 安全启动的最佳实践

  • 使用强加密算法:选择强加密算法(如RSAECC)进行数字签名和验证,确保签名的安全性。
  • 定期更新密钥和证书:定期更新和轮换加密密钥和证书,防止密钥泄露和证书过期。
  • 监控和审计:定期监控和审计启动过程中的安全事件,及时发现和响应潜在的安全威胁。
  • 安全补丁管理:及时应用安全补丁,修复已知的安全漏洞,确保系统的安全性。

【总结】

通过遵循这些网络安全规范和设计原则,可以有效地实现安全启动,保护系统免受恶意软件和未经授权的代码篡改,确保系统的安全性和可靠性。

在后续的内容中,我们将继续探讨安全刷新、安全诊断、安全存储和安全通讯等具体内容。希望通过这些内容,能够帮助大家更全面地理解汽车网络安全规范和设计的过程。

关于 MUNIK

我们目前具有经验丰富的网络安全专家团队,且获得多家著名认证机构的预审核评估资质,客户主要是OEM主机厂和T1/T2 零部件供应商,以及供应商和相关上下游行业。最后,如果你还为汽车网络安全相关资质、审核、测试评估和认证不知道怎么下手而发愁,请不要犹豫,关注上海秒尼科技术服务有限公司官网www.munik.com,获取更多服务内容~