资讯详情

资讯详情

ISO TR 4804-2020:自动驾驶安全设计与VV落地指南

简介ISO/TR 4804-2020是国际标准化组织发布的技术报告围绕道路车辆自动驾驶系统的功能安全与信息安全的设计、验证和验证面向汽车电子、自动驾驶安全工程师及测试验证人员为满足ISO 26262与ISO/SAE 21434的协同落地提供参考框架。资源为单个PDF文件容量约5.04MB方便阅读与离线学习。报告系统梳理了系统架构设计、故障检测与冗余设计、网络安全加固、数据加密、访问控制及实时监测与响应等关键环节同时结合MIL/SIL/HIL等多层级验证手段说明如何通过模拟测试与实际道路测试进行迭代确认。此外还纳入UN R155、UN GTR No. 21等法规要求以及更新、维护和漏洞修复流程体现全生命周期安全管理思路。对于正在做智能驾驶系统安全设计、网络安全合规以及测试验证的读者这份资料能帮助理解功能安全与信息安全如何相互支撑并可作为标准条文之外的实践指南目前已有1063人学习适合汽车行业工程师、科研人员和高年级相关专业学生深入研读。1. 为什么自动驾驶安全团队绕不开 ISO TR 4804-2020去年做L2级行泊一体项目时客户在准入材料里点名要提供符合ISO TR 4804-2020的证据。工程团队第一反应是去网上找PDF结果下载到的版本一个比一个旧连封面都长得不一样。更麻烦的是这份文档的名字里带TR——Technical Report它既不是标准也不是法规但几乎所有审核员都会拿它来问话。这篇内容要解决两件事ISO TR 4804-2020这份技术报告到底讲了什么以及拿到一份正版PDF之后怎么把它变成团队能执行的验证与确认VV方案。适用人群是功能安全工程师、系统架构师、测试验证工程师以及刚切换到自动驾驶赛道的软件负责人。你会看到标准体系定位、正版获取细节、安全设计原则拆解、常见落地误区最后用一个开源工具链做成本地可检索的安全知识库。2. ISO TR 4804-2020 在安全标准体系中的位置从 TR 到实际项目的落差2.1 TR 不是标准但它是 21434 之前的“操作说明书”ISO TR 4804-2020的完整标题是Road vehicles — Safety and cybersecurity for automated driving systems — Design, verification and validation。它由ISO/TC 22/SC 32/WG 12在2020年1月发布专门解决L2/L3级自动驾驶系统中功能安全、预期功能安全SOTIF与网络安全三条线如何协同的问题。技术报告TR是ISO的一种交付物权威性低于国际标准IS原文中大量使用“宜”should而不是“应”shall这意味着TR本身不构成认证依据。但在ISO/SAE 21434正式发布前的空窗期TR 4804几乎是唯一把自动驾驶安全活动串起来的公开文件。很多团队把它当成ISO 26262或ISO/SAE 21434的前置读本更准确的说法是它是一本跨域协同的操作说明书。TR 4804没有给出精确的风险阈值或量化指标却给出了如何识别安全相关功能、如何组织安全场景、如何把验证确认活动拆解到不同生命周期阶段的方法框架。对于正在写安全计划Safety Plan的团队TR 4804提供了一套章节级别的目录后续所有具体标准都需要往里填充内容。项目中最常见的落差也在这里审核员拿着TR的完整性来查证而工程师往往只看ISO 26262的某个clause导致同一份安全文档里出现两套逻辑。理解TR的位置才不会在后续落地中选错参照物。2.2 适用范围与边界从 L2 辅助驾驶到 L3 有条件的自动化TR 4804的适用范围没有停留在某个具体的自动化等级而是以驾驶自动化系统为对象。实践中最常用到的场景是L2级辅助驾驶比如行泊一体系统以及L3级有条件自动驾驶比如交通拥堵引导。它特别强调驾驶员与系统之间的责任切换包括接管handover请求、最小风险状态MRM和退出策略这些也是L2和L3设计的分水岭。如果项目只做L1级预警TR 4804的大部分原则仍然适用但投入产出比不高。我一般会在项目启动时先判断是否需要驾驶员监控系统是否有动态驾驶任务接管逻辑是否有云端下发策略。只要有一个判断结果为“是”就应该引入TR 4804作为安全案例的骨架。文档类型侧重点和 TR 4804 的关系ISO TR 4804:2020技术报告自动驾驶系统的设计、验证与确认跨域分析框架与活动组织ISO 26262:2018 系列国际标准功能安全提供通用安全生命周期和ASILISO 21448:2022国际标准预期功能安全补充非故障导致的危害行为ISO/SAE 21434:2021国际标准网络安全工程提供威胁分析与风险处置这张表是给技术负责人选标准优先级用的。TR 4804不是第四根柱子而是一张把三根柱子绑在一起的横撑。当ISO/SAE 21434的威胁分析和ISO 26262的FTA分析同时指向同一个感知失效时TR 4804给出的建议是统一到一条事件链里描述而不是分别写两份互相矛盾的报告。2.3 拿到 PDF 后先读哪几页章节地图与快速检索正版PDF通常带目录书签和封面水印。第一次阅读不建议从头到尾逐页读而是先提取文件结构再按“范围→术语→设计原则→验证方法”的顺序精读。ISO标准类文件的章节结构虽然不完全一致但一般会覆盖范围、规范性引用、术语定义、原则、方法、附录。你可以用Python快速验证PDF完整性和章节分布。from pypdf import PdfReader reader PdfReader(ISO_TR_4804-2020.pdf) print(总页数:, len(reader.pages)) print(元数据:, reader.metadata) for page_no, page in enumerate(reader.pages, start1): text page.extract_text() if text: first_line text.strip().splitlines()[0][:60] print(f第{page_no:3}页 首行: {first_line})这里的几个参数要注意reader.pages是PdfReader按需加载的页面集合直接调用len()会解析全部页面信息大文件时会有短暂延迟extract_text()返回的是无排版纯文本如果PDF本身做了图片化扫描返回内容可能为空这时需要OCR不能直接把空白页判断为文件损坏。通过首行输出能快速定位正文起始页和附录起始页方便做摘录。我建议每读一个章节就在PDF页面顶部的批注里写一个短语比如“安全场景分类”“MRM策略”。后续用书签视图展开时就等于有了一张自己的章节地图。这个方法比单独做笔记更好因为批注会随PDF归档审核时只需要导出书签就能展示阅读路径。3. 正版获取与文件管理ISO TR 4804-2020 PDF 的落地做法3.1 合规获取的三种渠道与选择标准ISO TR 4804-2020是受版权保护的技术报告获取渠道必须合规。最直接的是在ISO官网的在线目录中搜索“ISO/TR 4804:2020”加入购物车后用信用卡支付下载到的电子版通常带个人水印。多标准长期使用的团队可以走机构订阅平台例如ISO Online Standards或专业标准服务商。相比单次购买订阅模式更容易统一管理版本也方便下载其他ISO标准的PDF。在国内做交付和存档时还要优先确认有没有对应的标准化采标版本。如果项目合同中写明引用ISO TR 4804-2020那么即便存在翻译版审核也倾向看原版PDF。选择渠道时建议先问合规部不要因为着急就从第三方来源拿文件文件完整性和法律风险都不可控。渠道适用场景注意事项ISO官网单份购买单个项目启动按美元结算PDF带个人水印机构订阅平台多项目长期使用登录后下载需配置企业网络访问权限国家标准转化为正式出版国内备案与审计核对是否同版未采标时不能替代原版从成本角度看单份TR 4804价格不高但如果后续要连续采购ISO 26262、ISO 21448、ISO/SAE 21434订阅会更划算。评估时把两年内可能用到的标准数量算进去再决定一次性购买还是订阅。3.2 PDF 完整性校验与“正版”识别从官网下载后第一步不是打开阅读而是做完整性校验。正版ISO PDF的页数、文件大小、水印格式都有稳定特征。用命令行工具可以快速获取这些信息。以下命令适用于安装了poppler-utils的Linux环境或Git Bash。sha256sum ISO_TR_4804-2020.pdf pdfinfo ISO_TR_4804-2020.pdfsha256sum计算文件的SHA-256哈希值结果用于和下载记录比对。pdfinfo是poppler-utils中的一个命令输出Pages、Encrypted、Page size、File size等关键信息。重点看Pages字段是否与ISO官网显示的一致Encrypted若为yes只能说明文件有权限保护不代表文件损坏。正版PDF在文件属性中通常带有ISO/IEC版权信息标题为“ISO TR 4804:2020(E)”而不是随意命名的文件名。可以在PDF属性面板里查看创建者和修改日期。如果创建者是Adobe PDF Library且文件大小在1MB到5MB之间基本可以判断是正常出版文件如果文件被多次压缩或改名就要警惕内容是否完整。3.3 用脚本生成版本清单管理修订与翻译版技术报告也会出修订或勘误团队内部经常同时存在原版、翻译版、旧版引用。我建议给每一份PDF生成一个带哈希和来源标记的清单放到公司知识库或Git仓库里统一管理。import hashlib import json from pathlib import Path def sha256_file(path: Path, chunk_size: int 65536): h hashlib.sha256() with open(path, rb) as f: for chunk in iter(lambda: f.read(chunk_size), b): h.update(chunk) return h.hexdigest() pdfs sorted(Path(standards).glob(*.pdf)) manifest [] for p in pdfs: manifest.append({ file: p.name, sha256: sha256_file(p), size: p.stat().st_size, }) Path(manifest.json).write_text( json.dumps(manifest, ensure_asciiFalse, indent2), encodingutf-8 ) print(已生成, len(manifest), 条记录)这段脚本把standards目录下所有PDF文件信息写入manifest.json。参数chunk_size取65536字节是平衡内存和磁盘I/O的常用值文件越大效果越明显。注意Path.glob不递归子目录如果需要递归要改用rglob。生成清单后任何PDF被替换或改名都能被哈希检查发现。版本号建议直接在文件名里写“ISO TR 4804-2020.pdf”不要写成“ISO_TR_4804.pdf”这种没有年份的缩写因为审计时文件名本身就是证据的一部分。4. 核心方法拆解把 ISO TR 4804-2020 的安全原则落到设计文档4.1 跨域安全设计功能安全、SOTIF 和网络安全共用一条事件链TR 4804最具操作价值的地方是要求功能安全、预期功能安全和网络安全在同一个事件链上表达。传统做法是三个团队各出一份报告事故调查时再手动对齐时间戳。TR 4804给出的思路是在设计阶段就定义系统级安全属性例如最小风险状态、降级策略、驾驶员接管边界。这么做的好处是安全案例里的每一个危险事件都能顺藤摸瓜找到对应的SOTIF触发条件和网络安全攻击面。一个经典例子摄像头被强光干扰导致车道线丢失。功能安全关注的是图像信号是否失效SOTIF关注的是物理场景是否超出运行设计域网络安全关注的是干扰信号是否被恶意构造。TR 4804要求这三个视图合并为一条事件链而不是各自分析。落到设计文档时可以用一张矩阵把所有安全属性放到同一行。设计层面功能安全关注点SOTIF 关注点网络安全关注点感知传感器硬件失效环境场景超出ODD传感器数据仿冒决策计算逻辑单点故障算法对长尾场景误判模型输入投毒执行制动系统失效车辆动力学超出设计边界总线指令篡改接管驾驶员监控失效接管时间余量不足接管请求信息被延迟这张表是需求分析阶段的模板。每次评审会议只需要对照表格逐行确认就能判断安全活动是否覆盖完整。不要先写原因先定义事件链再补充每一条链的失效模型。4.2 场景驱动的 VV 活动仿真、封闭场地、实路测试怎么配比TR 4804强调基于场景的验证这一点和ISO 21448一脉相承。很多团队把测试数量当作安全指标导致仿真跑了十万公里但核心危险场景覆盖率不到一半。我建议采用三层测试金字塔仿真测试负责参数扫描和边界回归封闭场地复现高风险场景实路测试用于确认真实交通参与者的相关性。配比没有固定的数值我常用的起步比例是仿真80%、封闭场地15%、实路5%。比例不是真理只是方便向管理层解释资源投入。真正的量化指标应该是场景标签覆盖率ODD边界、天气、光照、路面附着、目标类型、动态交互六类标签至少要有一个归一化统计否则测试结果无法支撑安全论证。scenario_requirements { 仿真测试: [ODD边界, 天气组合, 失效注入], 封闭场地: [行人横穿, 接管切换, 最小风险状态], 实路测试: [自然驾驶, 随机天气, 交通流交互], } for test_class, tags in scenario_requirements.items(): base 继承自ISO TR 4804-2020验证项 for tag in tags: print(f{test_class},{tag},{base})这段脚本按测试类别输出逗号分隔行可以直接导入测试管理系统。字段顺序是测试类别、场景标签、来源标记。来源标记不要写成具体的章节号因为不同版本的TR页码可能变化反而影响追溯。4.3 在 ASPICE 流程里映射 TR 4804 的产出物TR 4804本身没有定义流程域但它要求的活动可以嵌入ASPICE和ISO/SAE 21434的标准流程。对已经通过ASPICE评估的团队不需要另起炉灶只需要把TR的框架作为SYS过程的输入。这样做的最大好处是审核时能复用现有证据链而不是为TR单独造一套文件。ASPICE 过程域TR 4804 对应活动建议产出物SYS.2 系统需求分析提取安全相关功能与场景系统级安全需求矩阵SYS.3 系统架构设计设计跨域安全状态与退路安全架构描述与事件链SYS.4 系统集成测试执行场景导入与故障注入集成测试报告与覆盖率统计SYS.5 系统合格性测试完成安全案例摘要与发布建议发布评审记录这里要提醒的是ASPICE审核员关注的是过程能力不是标准引用数量。把TR 4804的内容映射到SYS活动时一定要在产出物里写出设计决策的出处和偏离开放项。例如在SYS.3的安全架构描述里可以写“本架构遵循TR 4804跨域安全状态定义”而不是只贴一个PDF页面截图。我见过不少团队为了满足TR而新增十几个文档最后项目延期。正确的做法是把TR里的核查事项转成现有模板的字段把新流程降到最低。比如在SYS.2模板中增加一列“TR 4804映射”这样完成后通过筛选就能自动形成对照表。5. 常见误区与排错为什么你的 ISO TR 4804-2020 落地总缺一环5.1 把 TR 当规范should 和 shall 带来的需求与评审差异TR 4804不是强制标准但很多采购合同和准入文件会直接把它的条款写进要求这时候should就变成了合同里的shall。团队如果只按字面语气决定做不做会在评审时陷入被动。正确做法是建立语气偏差清单把所有TR条款按强制程度分级维护。TR 原文语气常见误解落地处理宜采用should直接丢弃评估偏离并在安全计划中记录应执行shall当作唯一方法检查上下文可能引用其他标准推荐recommended当作强制按风险等级排序实施处理的原则是偏离不免费但也不需要对每一条都全盘接受。每一个should必须在项目安全文档中写清楚是否采用不采用的风险是什么替代措施是什么。这样一来审核员关心的是风险是否被识别而不是条款是否全勾。5.2 PDF 协作与归档的三个实际坑第一个坑是PDF批注不兼容。团队里有人用Foxit有人用Adobe还有人用Chrome内置阅读器各自加的高亮和批注在其他软件里可能显示不全严重时会导致文件无法保存。建议项目组统一指定一款桌面端PDF编辑器并关闭浏览器内置阅读器的编辑功能。第二个坑是翻译版页码不一致。ISO TR 4804-2020的英文原版和翻译版页码排列不同评审引用时必须写原版章节号不能写翻译版页码。第三个坑是正版PDF的权限限制。ISO下载的PDF往往带有禁止复制和打印的权限但允许阅读和搜索。团队内部需要摘录时我用屏幕截图配合文字识别生成索引而不是绕过权限这样既尊重版权又能保留追溯信息。可以用一段脚本快速检查文件权限。from pypdf import PdfReader reader PdfReader(ISO_TR_4804-2020.pdf) print(是否加密:, reader.is_encrypted) meta reader.metadata if meta: print(标题:, meta.title) print(作者:, meta.author) else: print(无元数据可能是扫描版)is_encrypted返回True说明文件有加密保护很多正版ISO PDF即使标记加密也不影响打开。meta.title记录的是PDF内部标题正版文件通常以“ISO TR 4804:2020(E)”开头。如果meta.author为空不能直接判定为盗版因为部分ISO文件不写作者信息。5.3 验证活动的三个反模式避开即可提升通过率反模式一仿真只跑通过场景不注入传感器失效。这样日志永远全是绿色评审时一旦被追问失败条件整个验证结论会被推翻。每个仿真任务里至少预留30%的故障注入用例。反模式二封闭场地测试用例全部来自公开法规和系统实际ODD无关。法规场景只能保证最低合规不能覆盖产品宣称的自动驾驶能力。需要从需求矩阵中提取高风险场景补充到测试规范里。反模式三实路测试没有终止准则跑到规定里程就停。里程是过程指标不是安全指标。应按照采集数据中危险事件出现率、环境覆盖比例、接管频率来定义退出条件否则实路数据无法支撑统计分析。6. 用开源工具把 ISO TR 4804-2020 变成可检索的知识库6.1 提取全文并保留页码索引我平时不直接翻PDF而是用pypdf把全文抽成纯文本再按章节标题切成Markdown文件。这样可以直接在任何编辑器里检索。对于一份几百页的TR提取后文本量不大但能有效绕开PDF阅读器搜索卡顿的问题。from pypdf import PdfReader reader PdfReader(ISO_TR_4804-2020.pdf) pages [] for page_no, page in enumerate(reader.pages, start1): text page.extract_text() if text: pages.append(f\n\n!-- page {page_no} --\n{text}) with open(iso_tr_4804.md, w, encodingutf-8) as f: f.writelines(pages)extract_text()返回当前页文本插入HTML注释是为了保留页码索引。后续搜索到某段内容时可以通过注释里的页码反查原PDF。如果发现某些页提取为空说明原文件可能是扫描版需要先用OCR层把文字压进PDF再重新执行提取。6.2 结合 ripgrep 实现评审现场的秒级定位提取完Markdown后推荐用ripgrep做关键词检索。例如要查所有涉及safety case的位置运行rg -n -i safety case iso_tr_4804.md-n输出行号-i忽略大小写。这套命令适合在评审会现场快速定位证据位置也适合把TR中的每一条原则映射到团队内部文档形成从标准到验证项的闭环。配合标签页批量检索可以把安全原则、场景标签、测试用例串成同一个链接体系之后再做合规审查就不需要来回翻PDF了。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →