1. 汽车互联浪潮下的安全悖论:当我们在玩App时,CAN总线在燃烧吗?
作为一名在汽车电子和嵌入式安全领域摸爬滚打了十几年的工程师,我亲眼见证了汽车从一个纯粹的机械代步工具,演变成一个移动的、高度互联的智能终端。这个过程充满了令人兴奋的创新,但也埋下了无数令人夜不能寐的安全隐患。最近读到一篇2016年的旧文,标题犀利地发问:“当我们在玩App时,CAN总线在燃烧吗?”,瞬间击中了我。这几乎是过去十年汽车行业发展的一个精准预言和缩影。车企们争先恐后地推出各种炫酷的远程控制功能——用手机App远程启动引擎、调节空调、甚至像文中提到的路虎那样,在空中就能折叠后排座椅。营销部门将这些功能包装成“极致便利”和“科技奢华”,但在我们这些搞底层安全和总线通信的人看来,这无异于在自家城堡的围墙上,为了美观而主动凿开了一个个形状各异、缺乏守卫的“狗洞”。
问题的核心,就在于那个看似古老却至关重要的汽车神经系统——CAN总线。它诞生于一个彼此信任的封闭环境,设计初衷是让发动机控制器、变速箱控制器、刹车控制器等关键部件可靠、高效地通信。它没有内置的“安检员”,任何接入这个网络的节点,理论上都可以向任何其他节点发送指令。过去,接入这个网络的都是经过严格验证的“自己人”(ECU)。而现在,为了满足互联功能,信息娱乐系统(IVI)、车载通信模块(T-Box)被接入了同一个网络。这些模块直接面向外部世界(蜂窝网络、Wi-Fi、蓝牙),成为了外部攻击者梦寐以求的跳板。当你惬意地用手机App远程启动车辆时,你有没有想过,这条指令所经过的路径,可能正被别有用心者窥探甚至劫持?那个用来折叠座椅的指令,其数据包格式如果被破解,攻击者稍作修改,会不会变成让车辆在高速行驶中突然刹车的死亡指令?这不是危言耸听,2015年安全研究员远程入侵并控制一辆吉普切诺基,导致克莱斯勒召回140万辆汽车的事件,已经为我们敲响了最刺耳的警钟。
这篇文章虽然发表于八年前,但其中讨论的矛盾——对“酷炫”互联功能的狂热追求与对基础安全架构的忽视——至今仍是悬在整个行业头上的达摩克利斯之剑。今天,我想从一个一线工程师的视角,深入拆解这个“玩App”与“烧总线”背后的技术逻辑、设计误区,以及我们究竟该如何在拥抱创新的同时,守住安全的底线。
2. 核心矛盾解析:便利性需求与安全架构的先天冲突
2.1 “万物互联”的诱惑与车企的营销焦虑
汽车行业正经历一场前所未有的“智能化”军备竞赛。这场竞赛的焦点,从十年前的百公里加速、油耗,迅速转向了屏幕尺寸、语音助手灵敏度和手机App功能的丰富度。其背后的驱动力是复杂的:一方面,消费电子体验重塑了用户对“智能”的期待,一辆不能与手机无缝联动的车,在年轻消费者眼中可能显得“落伍”;另一方面,传统的机械性能和内饰豪华感差异正在缩小,软件定义汽车和互联服务成为了新的利润增长点和品牌差异化抓手。
于是,我们看到了文中描述的近乎荒诞的场景:路虎的公关团队兴奋地宣传一项“空中折叠座椅”的功能,并将其作为技术领先的标志。从纯粹的产品经理视角看,这或许挖掘了一个“用户痛点”:当你从超市满载而归,双手提着购物袋走向车辆时,提前用手机把后排座椅放倒,岂不美哉?但这个“痛点”的真实性和普适性值得深究。为了满足这个极低频、甚至有些牵强的场景,工程师们需要在原本就复杂的车控网络(CAN总线)上,为座椅控制模块增加一个通过远程信号触发的接口。这就像为了偶尔能直接从阳台爬到邻居家借瓶酱油,而在两家之间常备一架梯子,却忽略了这架梯子也可能被小偷利用。
车企的营销焦虑压倒了系统的风险考量。功能发布的优先级远远高于安全审计的完整性。很多时候,这类互联功能是由独立的软件团队或供应商快速开发,再“嫁接”到整车电子电气架构上的。在紧张的开发周期内,安全往往沦为“合规性检查项”——只要通过了某些标准认证(如ISO 21434)的流程,拿到了“安全评估报告”,功能就可以上车。至于报告背后那些关于攻击路径、潜在漏洞的深层假设是否经得起实战考验,则少有人深究。
2.2 CAN总线的“天真”与“脆弱”:一个信任过度的系统
要理解风险,必须回到技术本源。控制器局域网总线是一种广播式的串行通信协议,其设计哲学基于一个关键前提:所有节点都是可信的。它的主要特点决定了其安全短板:
- 无原生身份认证:CAN总线上的消息只有标识符和数据场。任何节点发送消息时,总线不验证“你是谁”,只仲裁“谁先说”。这意味着,如果一个恶意节点(如被入侵的信息娱乐系统)模拟了安全气囊控制器的标识符发送一条“点火”指令,总线会无条件地将该指令传递给所有节点,包括气囊本身。
- 消息无加密:标准CAN协议中,数据以明文形式传输。任何能够物理接入总线或通过其他节点间接接入的设备,都可以“窃听”所有通信内容。车速、刹车状态、转向角度、车门锁状态等敏感信息一览无余。
- 错误处理机制可被利用:CAN有复杂的错误检测和故障隔离机制。但高级的攻击者可以利用“总线泛洪”攻击,持续发送错误帧或高优先级消息,导致合法节点因不断报错而进入“总线关闭”状态,从而实现拒绝服务攻击,让关键ECU失能。
更令人担忧的是网络架构的“扁平化”。在许多传统架构或低成本的域融合架构中,为了节省线束和网关成本,信息娱乐域(娱乐、导航、手机互联)与车身控制域(车门、车窗、座椅)甚至部分底盘域(车速信号读取用于音量随速调节)共享同一条或几条CAN总线。这就彻底打破了“功能安全”与“信息娱乐”之间的物理隔离。
注意:这里存在一个广泛的设计误区。许多工程师认为,只要信息娱乐系统“只读”关键总线数据(如读取车速用于调节音量),就是安全的。但关键在于,一个被攻破的信息娱乐系统,其CAN控制器硬件通常同时具备“读”和“写”能力。攻击者一旦在应用层或操作系统层获得足够权限,就能轻易将控制器从“监听模式”切换到“发送模式”,从而注入恶意指令。物理上的接收-only接线方式,在实际量产车中极为罕见,因为它增加了布线和ECU硬件变种的成本。
2.3 攻击面剧增:从OBD-II接口到云端API
互联汽车将攻击面从单一的物理接口,扩展到了一个立体、多维的复杂体系:
- 物理接口:传统的OBD-II诊断接口仍是直接接入CAN总线的黄金入口。虽然需要物理接触,但在维修店、租赁车辆或短暂接触的场景下,风险依然存在。
- 短距无线:蓝牙、Wi-Fi(尤其是用于热点或无线CarPlay/Android Auto的Wi-Fi Direct)是近距离攻击的跳板。蓝牙协议栈的漏洞、Wi-Fi热点的弱密码或WPS漏洞,都可能成为突破口。
- 长距无线:蜂窝网络连接的T-Box是远程攻击的核心。其软件栈(操作系统、通信协议栈、APN配置)、与后端云平台通信的API接口、以及SIM卡本身都可能存在漏洞。
- 移动App:官方或第三方的手机App是攻击链的重要一环。App可能通过逆向工程被分析,其与云端或车端的通信可能被中间人攻击拦截,App本身也可能因代码漏洞被篡改或利用。
- 后端云平台:车企的云端服务器管理着数百万车辆。一旦云端API被攻破,攻击者可以批量向车辆发送恶意指令。云平台的身份认证、访问控制、数据加密任何一环出问题,都是灾难性的。
- 供应链:来自不同供应商的ECU软件/硬件、第三方库、开源组件,都可能引入未知漏洞。车企作为集成方,很难对供应链的每一行代码进行深度审计。
所有这些攻击面,最终都指向一个共同的目标:获取向车内CAN总线发送指令的能力。一旦突破,车辆就从一个受控的交通工具,变成了一个可能危及生命的“失控机器”。
3. 从设计源头构建纵深防御:理念与实践
面对如此严峻的形势,头痛医头、脚痛医脚式的打补丁已经不够了。必须从电子电气架构设计之初,就贯彻“纵深防御”和“最小权限”的安全理念。
3.1 架构隔离:功能域与安全域的重新划分
最有效、最根本的防御措施是物理和逻辑上的网络隔离。现代域集中式或中央计算+区域控制的架构为此提供了契机。
- 独立的安全网关:在娱乐域/互联域与车辆控制域之间,部署一个具备防火墙功能的安全网关。这个网关不应只是一个简单的路由交换机,而应是一个具备深度包检测、消息过滤、身份认证和速率限制功能的专用安全ECU。
- 防火墙策略:网关防火墙必须执行严格的白名单策略。例如:
- 允许从T-Box发往车身域CAN的指令,仅限于“车门解锁/上锁”、“空调预设启动”、“车窗关闭(仅限锁车后)”等有限、经过风险评估的命令。
- 绝对禁止从娱乐系统或T-Box向动力总成CAN(发动机、变速箱)、底盘CAN(刹车、转向)发送任何指令。读取这些域的数据(如车速、转速)也应通过网关进行代理和过滤,只提供必要的、经过脱敏的数据。
- 对指令进行频率限制,防止洪水攻击。例如,每分钟内“车门解锁”指令不得超过3次。
- 硬件隔离:对于最高安全等级的功能(如转向、制动),应考虑使用独立的通信通道,如基于时间触发的FlexRay或高速容错CAN,并严格限制其他域的物理接入。
实操心得:在定义网关防火墙策略时,最困难的往往不是技术,而是跨部门的沟通。车身电子团队可能希望为“舒适进入”功能开放更多权限,而安全团队则要求尽可能收紧。一个有效的方法是建立“安全需求追溯矩阵”,将每个请求开放的信号或指令,与具体的用户场景、商业价值、以及对应的攻击树分析关联起来。用数据和安全案例来说服,而不是单纯地说“不”。
3.2 车内通信安全加固:为CAN总线穿上“盔甲”
在必须跨域通信的场景下,需要对CAN总线本身进行加固。
- CAN FD与CAN XL:升级到带宽更高的CAN FD或CAN XL,为引入安全机制腾出空间。
- 身份认证与新鲜度值:在应用层为关键控制指令引入认证机制。例如,使用基于对称加密的MAC或基于非对称加密的数字签名。每条指令必须附带一个由发送方私钥生成的签名,接收方用公钥验证。同时,必须加入新鲜度值或序列号,防止指令重放攻击。
- 总线加密:对于涉及隐私或关键状态的数据(如车速、位置、车门状态),可以考虑使用轻量级的总线加密方案,如AES-128-CTR模式。但需注意,加密会增加ECU的算力开销和通信延迟,需要精心设计密钥管理和分发机制。
- 入侵检测与防御系统:在关键总线上部署IDS。它可以学习车辆正常状态下的通信模式(如消息ID、发送周期、数据场范围),实时监控总线。一旦检测到异常(如非预期ID出现、消息频率异常、数据值超出合理范围),可以立即触发警报,并联动网关执行预定义动作,如将异常节点隔离或进入安全降级模式。
3.3 云端与端侧协同的安全设计
车辆安全不再是一个孤立单元的问题,而是“云-管-端”协同的体系。
- 安全的OTA升级:这是修复漏洞的生命线。必须确保升级包从生成、传输到安装的全链路安全:云端签名、传输加密、车端验签、安装前完整性校验、回滚机制。私钥必须存储在云端硬件安全模块中,绝不能出现在编译服务器上。
- 车辆安全运营中心:建立VSOC,持续收集车辆的匿名安全日志(来自IDS、ECU异常报告)。利用大数据分析,可以早期发现潜在的攻击模式或零日漏洞。当检测到某类攻击在车队中零星出现时,可以快速通过OTA推送紧急补丁或更新防火墙规则。
- 严格的访问控制与密钥管理:手机App、第三方服务访问车辆API,必须基于强身份认证(如OAuth 2.0)。为每辆车、每个用户、每个服务颁发独立的访问令牌,并遵循最小权限原则。车辆的根密钥、T-Box的凭证必须安全存储于硬件安全模块或安全芯片中,防止软件提取。
4. 开发流程与安全测试:将安全融入血脉
再好的架构设计,如果开发流程漏洞百出,也会功亏一篑。安全必须“左移”,融入从需求到运维的每一个环节。
4.1 威胁分析与风险评估
在项目概念阶段,就必须启动系统性的威胁分析与风险评估。这不是一次性的活动,而应贯穿整个生命周期。
- 资产识别:列出所有需要保护的资产,如车辆控制权、用户隐私数据、商业秘密数据。
- 威胁建模:使用STRIDE等模型,从攻击者视角,分析每个资产可能面临的威胁(欺骗、篡改、抵赖、信息泄露、拒绝服务、权限提升)。
- 攻击树分析:针对高风险的威胁场景(如“远程控制刹车”),绘制详细的攻击树,穷举从初始攻击面(如蜂窝网络)到最终目标(刹车ECU)的所有可能路径。这能帮助识别最脆弱的环节。
- 风险评估与需求导出:对每个威胁场景评估可能性和影响,确定风险等级。根据风险等级,导出具体的安全需求,如“必须对从T-Box发往刹车ECU的指令进行身份认证和完整性校验”。
4.2 安全编码与供应链管理
- 安全编码规范:为AutoSAR C、C++等车载常用语言制定强制性的安全编码规范,禁止使用不安全的函数,强制进行输入验证、边界检查。使用静态代码分析工具在开发早期发现潜在漏洞。
- 第三方组件管理:建立严格的软件物料清单,对所有引入的第三方库、开源组件进行清单管理、漏洞监控和版本跟踪。对于关键组件,应进行源代码审计或黑盒安全测试。
- 安全测试:超越传统的功能测试,必须包含:
- 模糊测试:向ECU接口、通信协议栈、App API输入大量随机、异常的数据,测试其鲁棒性和崩溃恢复能力。
- 渗透测试:聘请专业的“白帽”安全团队,模拟真实攻击者的手段,对整车、子系统、云端服务进行红队演练。文中提到的VisualThreat等公司提供的正是此类服务。
- 硬件安全测试:测试ECU的硬件接口是否容易被物理攻击,如通过调试接口提取固件、进行故障注入攻击等。
4.3 事故响应与持续监控
制定详尽的安全事件响应计划。一旦发现漏洞或遭受攻击,应有清晰的流程进行:内部评估、漏洞修复、OTA推送、用户通知、监管报告。建立漏洞奖励计划,鼓励外部安全研究员负责任地披露漏洞。
5. 行业挑战与未来展望:道阻且长,行则将至
尽管技术方案日益成熟,但汽车网络安全在实践中仍面临巨大挑战。
成本与时间的压力:增加安全网关、使用安全芯片、进行全面的渗透测试,都会直接增加BOM成本和时间成本。在激烈的市场竞争和成本控制压力下,安全往往成为第一个被妥协的对象。管理层需要认识到,安全不是成本,而是避免未来巨额召回、品牌声誉损失和法律诉讼的投资。
长生命周期的挑战:一辆车的生命周期可能长达15年,而网络攻击技术日新月异。今天安全的系统,五年后可能不堪一击。这意味着汽车必须具备持续安全更新的能力,并且最初的设计要留有足够的算力和存储余量,以应对未来的安全算法升级。
复杂的供应链协同:整车厂、一级供应商、二级芯片供应商、软件供应商……安全责任在漫长的供应链中被稀释。必须建立贯穿整个供应链的透明、可追溯的安全责任体系和协作机制。
法规与标准的推动:全球范围内的法规正在加速完善。中国的《汽车数据安全管理若干规定》、欧盟的UNECE WP.29 R155/R156法规,都强制要求车企建立网络安全管理体系和车辆安全开发生命周期。合规是底线,而非天花板。
从我个人的经验来看,汽车网络安全的未来在于“体系化”和“自动化”。体系化是指将安全从一个技术点,提升为涵盖组织、流程、技术的完整管理体系。自动化则是利用AI和机器学习,赋能IDS实现更精准的异常检测,自动化安全代码审计,以及加速安全测试流程。最终的目标,是让安全像车辆的被动安全结构一样,成为深植于产品基因中的、用户无需感知但始终存在的保障。
回到那个尖锐的问题:“当我们在玩App时,CAN总线在燃烧吗?”答案是,如果我们继续以“功能优先、安全后补”的思维去设计汽车,那么CAN总线不仅可能燃烧,甚至可能成为一场灾难的导火索。但如果我们从第一行代码、第一个电路图开始,就将安全视为与功能、性能同等重要的核心属性,那么,我们完全可以在享受互联科技带来的便利的同时,确保那个承载着生命安全的神经网络,始终坚固、可靠、可信。这需要每一位从业者——从工程师到产品经理,从供应商到车企高管——转变思维,真正敬畏技术背后的责任。这条路很长,但我们必须走下去。