全文约12,200字,建议收藏阅读
入侵检测系统管理器(IDSM)
1.1 什么是入侵检测系统管理器
IdsM 包含一个库:向应用程序提供标准化的 C++ API,用于报告安全事件。让应用程序能够一致地生成和报告安全事件。
IdsM 还包括一个运行时进程守护程序(idsm_daemon):支持接收、存储、过滤和传输安全事件。这个守护程序确保安全事件能够被有效地管理和处理。
1.2 入侵检测系统概述
1.2.1 术语简介
1.2.2 安全传感器(Security Sensor)
监控系统活动:安全传感器负责持续监控车载系统中的各种活动和数据流。它们可以检测到潜在的安全威胁或异常行为,例如未授权的访问、数据篡改或异常通信模式。
检测安全事件:当安全传感器检测到潜在的安全威胁或异常行为时,它会生成一个安全事件(SEv)。这些事件可以包括各种类型的安全问题,例如入侵尝试、恶意软件活动或系统故障。
报告安全事件:一旦生成安全事件,安全传感器会将这些事件报告给入侵检测系统管理器 (IdsM)。报告的内容通常包括事件的详细信息,例如事件类型、发生时间、影响范围等。
多样化的传感器类型:安全传感器可以是多种类型的组件,包括 AUTOSAR BSW 模块、CDD(复杂设备驱动程序)和 SWC(软件组件)。这些传感器可以根据不同的需求和应用场景进行配置,以确保全面的安全监控。
实时响应:安全传感器能够实时响应检测到的安全威胁,确保系统能够迅速采取措施来应对潜在的风险。这有助于提高系统的整体安全性和可靠性。
1.2.3 安全事件内存 (SEM)
存储安全事件:SEM 是一个专门用于存储安全事件的内存区域。它独立于主诊断事件内存,确保安全事件能够被单独管理和存储。
管理安全事件:SEM 负责对存储的安全事件进行管理,包括检索、更新和删除等操作。它确保安全事件能够被有效地组织和访问。
事件分类和优先级:SEM 可以根据事件的类型、严重性和优先级对安全事件进行分类和排序。这有助于快速识别和处理最重要的安全威胁。
数据完整性和安全性:SEM 确保存储的安全事件数据的完整性和安全性。它采用各种安全措施来防止数据篡改和未授权访问。
与 IdsM 的交互:SEM 与入侵检测系统管理器 (IdsM) 紧密合作。IdsM 负责将处理后的安全事件存储到 SEM 中,并在需要时从 SEM 中检索事件数据。
支持审计和分析:SEM 提供了一个可靠的数据存储基础,支持后续的审计和分析。安全团队可以使用存储在 SEM 中的数据来进行深入的安全分析和事件追踪。
1.2.4 入侵检测系统管理器(IdsM)
接收安全事件:IdsM 从安全传感器接收安全事件(SEv)。这些事件是由系统中的各种安全传感器检测到的潜在威胁或异常行为。
处理安全事件:IdsM 对接收到的安全事件进行处理,包括存储、过滤和分类。它会根据预定义的规则和策略对事件进行评估,以确定其严重性和优先级。
存储安全事件:IdsM 将处理后的安全事件存储在安全事件内存 (SEM) 中。SEM 是一个专门用于存储和管理安全事件的内存区域,独立于主诊断事件内存。
传输安全事件:IdsM 负责将处理后的安全事件传输到入侵检测系统报告员 (IdsR)。IdsR 会从不同 ECU 的 IdsM 实例接收这些事件,并生成综合报告。
提供API 接口:IdsM FCs提供一个 C++ API 库,供应用程序使用。这个 API 实现在 AUTOSAR 标准命名空间 ara::idsm 中,使应用程序能够报告安全事件并与 IdsM 进行交互。
运行时进程守护程序:IdsM 包括一个运行时进程守护程序,支持接收、存储、过滤和传输安全事件。这个守护程序确保 IdsM 能够在系统运行时持续监控和处理安全事件。
1.2.5 Intrusion Detection System Reporter (IdsR)
接收处理过的安全事件:IdsR 从不同的 ECU(电子控制单元)中的 IdsM 实例接收已经处理过的安全事件。这些事件已经经过初步的筛选和分类,包含了重要的安全信息。
汇总安全事件:IdsR 将来自多个 IdsM 实例的安全事件进行汇总和整合。这一步骤有助于形成一个全面的安全事件视图,便于进一步分析和决策。
生成报告:IdsR 根据汇总的安全事件生成综合报告。这些报告可以包含事件的详细信息、发生频率、严重程度等,有助于安全团队了解系统的安全状况。
传输和存储:IdsR 负责将生成的报告传输到指定的存储位置或安全管理系统中,以便后续的审查和分析。
支持决策:通过提供详细的安全事件报告,IdsR 帮助安全团队做出更明智的决策,采取适当的措施来应对潜在的安全威胁。
1.3 IdsM架构图
1.4 什么是安全事件
1.4.1 安全事件的定义
Event Type ID:唯一标识事件类型的ID,用于标识网络安全事件的名称和信息。
Description:安全事件的信息。
IdsM Instance ID:标明哪个ECU汇报了网络安全事件。
认证账号:描述该网络安全事件在被IdsM认证之前发生的频次。
时间戳:记录事件发生的确切时间,以便追踪和分析事件的时间顺序。
认证时的上下文数据:Context Data与事件相关的附加信息,例如网络流量数据、用户操作记录等,帮助更全面地理解事件背景。
E2E签名:确保事件数据的完整性和真实性。
1.5 IdsM的工作流程
1.5.1 IdsM的工作流程
检测安全事件:安全传感器可以是 AUTOSAR BSW 模块、CDD 或 SWC。它们负责监控系统中的各种活动,并检测潜在的安全威胁或异常行为。
报告安全事件:一旦检测到安全事件,安全传感器会生成一个安全事件(SEv)并将其报告给入侵检测系统管理器 (IdsM)。IdsM本身也可以用作安全事件传感器,报告内部安全事件。
接收安全事件:IdsM 接收来自安全传感器的安全事件(SEv)。
处理安全事件:IdsM 对接收到的安全事件进行处理,包括存储、过滤和分类。它还可以根据预定义的规则和策略对事件进行评估,以确定其严重性和优先级。
传输安全事件:处理后的安全事件会被传输到安全事件内存 (SEM) 进行进一步存储和管理。
存储安全事件:SEM 是一个独立于主诊断事件内存的用户定义的诊断事件内存。它专门用于存储和管理安全事件。
管理安全事件:SEM 负责对存储的安全事件进行管理,包括检索、更新和删除等操作。
接收处理过的安全事件:IdsR 从不同 ECU 的 IdsM 实例接收处理过的安全事件。
汇总和报告:IdsR 汇总来自多个 IdsM 实例的安全事件,并生成综合报告。这些报告可以用于进一步的分析和决策,以提高系统的安全性。
注:通过以上过程,入侵检测系统能够有效地检测、处理和管理安全事件,从而提高车载系统的整体安全性。
1.5.2 IDSM如何处理安全事件?
安全事件捕获:安全传感器(如车辆的软件组件或硬件设备)检测到安全事件(SEv),并将其发送到入侵检测系统管理器(IdsM)。 事件缓冲:IdsM接收到事件后,首先将其存储在缓冲区中,以便按照预设的策略进行后续处理。 事件过滤:IdsM应用一系列过滤器(如阻止器、采样器、聚合器和速率限制器)对事件进行筛选,确保只有重要且有效的事件被保留下来,即合格的安全事件(QSEv)。 事件存储:合格的安全事件被传输到安全事件内存(SEM)进行存储,以便后续检索和分析。 事件报告:IdsR从SEM中检索存储的事件,并生成相应的报告,以供安全团队进行进一步的分析和响应。 诊断与访问控制:IdsM提供诊断服务,允许安全团队访问持久化的事件,并可以重新配置报告模式。同时,IdsM还实施访问控制,确保只有授权的进程可以生成、修改或访问事件数据。
IDSM的配置与集成
2.1 配置安全事件的流程
2.1.1 配置安全提取(SecXT)
定义安全事件:SecXT 允许用户定义哪些安全事件需要被监控和处理。这有助于确保系统能够识别和响应特定的安全威胁。 配置参数:SecXT 包含每个安全事件的详细配置参数,如事件的优先级、处理方式等。这些参数帮助 IdsM 更有效地管理和处理安全事件。 系统集成:通过配置 SecXT,可以确保安全事件的报告和处理与系统的其他部分(如安全传感器、自适应应用程序等)无缝集成。这有助于提高系统的整体安全性和响应能力。
2.1.2 配置安全事件的报告模式
2.1.3 创建IdsM Module Instantiation
2.1.4 配置安全事件的过滤链
Idsm Filter chains:这是一系列过滤器,用于确定哪些安全事件应该被报告和处理。过滤链可以包括状态过滤器、采样过滤器、聚合过滤器和阈值过滤器等,它们共同工作以确保只有符合特定标准的事件才会被传递到IdsM实例进行进一步处理。
IdsmRateLimitation:这是一个限制机制,用于控制IdsM实例报告安全事件的频率。这有助于防止系统过载,并确保IdsM能够有效地处理事件。
IdsmTrafficLimitation:用于控制通过网络传输的安全事件的数据量。这有助于维护网络性能并防止拥塞。
IdsM使用过滤链来处理安全事件,AUTOSAR规范中过滤链包括以下过滤器:
机器状态过滤器:根据机器状态丢弃安全事件。
采样过滤器:每n次转发一个安全事件。
聚合过滤器:在配置的时间间隔内聚合安全事件。
阈值过滤器:根据阈值丢弃或转发安全事件。
2.1.5 创建IdsM Instance
2.1.6 创建组件与端口以报告安全事件(Component and Port)
首先,我们需要创建一个名为AraIdsMSecEvent_AdaptiveApplicationSwComponentType的应用程序软件组件类型。
在此组件类型中,我们需要添加一个RPort(接收端口),并为其分配SecurityEventReportInterface作为所需的接口。这个RPort将用于接收和报告安全事件。
使用执行管理编辑器,将软件组件原型分配给对应的可执行文件,确保应用程序能够正确运行。
2.1.7 配置安全事件与映射
创建一个安全事件过滤链,该链包括安全事件聚合过滤器(用于汇总多个事件)、每N次出现的事件过滤器(控制事件触发的频率)和安全事件阈值过滤器(设置事件触发的条件)。
为后续步骤创建必要的软件组件。
将定义的安全事件指派到相应的进程中,确保事件的管理与进程相关联。
将安全事件映射到报告端口原型,以便在事件发生时进行报告。
在xAAP编辑器中,为基本软件(BSW)模块设置安全上下文事件映射,并创建新的AR(抽象表示)元素。
在IdsM配置选项卡中,创建上下文映射,并添加以下条件:
安全事件过滤链引用条件
IdsM实例引用条件
安全事件定义引用条件(作为SecurityEventContextProps的一部分)
在配置这些元素时,选择之前生成的相应元素作为安全事件过滤链引用条件、IdsM实例引用条件和安全事件定义引用条件。同时,根据需要对SecurityEventContextProps进行调整。
将可报告的安全事件添加到IdsM模块实例中,以便进行有效管理。
在定义映射中,添加RPort In组合实例引用,并使用先前生成的元素设置可配置参数,确保映射的准确性。
最后,确保将安全事件准确地分配到定义的进程中,形成从事件定义到事件报告和管理的完整链条。
2.1.8 IdsM 的内部安全事件报告机制
2.1.9 注册时间戳回调机制
通过事件报告接口:直接在报告安全事件时附加时间戳。
通过应用软件:由应用软件在生成事件时提供时间戳。
由堆栈提供:由IdsM内部的时间管理堆栈自动生成时间戳。
在用户回调注册之前请求时间戳。
用户回调被注册为nullptr(空指针)。
用户回调处理未在规定的100毫秒内完成,此时TimestampProvider功能将被禁用。
2.1.10 安全事件生成流程
构造InstanceSpecifier对象:利用引用事件类型的PortPrototype的shortName路径。
创建EventReporter对象:通过传递InstanceSpecifier来构造。
报告事件:在EventReporter对象上调用ReportEvent函数。
2.1.11 使用EventReporter报告安全事件
2.1.12 API 介绍与生命周期管理
方法签名:void EventReporter::ReportEvent(const CountType countType = 1U)
描述:该方法用于报告安全事件,countType 参数是可选的,表示安全传感器记录该事件的次数。如果不提供 countType,则默认为 1。
方法签名:void EventReporter::ReportEvent(const TimestampType timestamp, const CountType countType = 1U) 描述:该方法不仅报告安全事件,还附带一个时间戳。timestamp 参数允许使用安全传感器记录的事件发生时间进行报告,countType 参数同样是可选的,表示记录次数。
方法签名:void EventReporter::ReportEvent(const ContextDataType &contextData, const CountType countType = 1U)
描述:该方法报告安全事件时,还包含上下文数据。contextData 参数允许使用安全传感器提供的与事件相关的额外信息进行报告,countType 参数表示记录次数,也是可选的。
初始化
方法:通过调用 ara::core::Initialize 函数来初始化IdsM。
描述:在IdsM开始运行之前,必须执行初始化步骤。这包括加载配置、分配资源以及准备IdsM所需的所有组件。
去初始化
方法:通过调用 ara::core::Deinitialize 函数来去初始化IdsM。
描述:在系统关闭或IdsM不再需要时,应进行去初始化步骤。这包括释放资源、保存状态(如果需要)以及确保IdsM的组件被正确关闭。
跨功能集群依赖
3.1 提供的接口Provided Interfaces
3.2 Required Interfaces
3.3 状态管理与IdsM的集成
IdsM守护进程的可执行文件:应配置为idsm。
RootSwComponentPrototype:应设置为idsmRootSwComponent,这是IdsM在软件组件层次结构中的根节点。
SwComponentPrototype:应配置为SwComponentPrototype_TOSM,这表示IdsM与STM之间的通信组件。
PortPrototype:应设置为RPIDSMStateMachineState,这是IdsM用于接收STM状态的端口。
创建IPC客户端:IdsM需要创建一个新的IPC客户端,以便与STM进行通信。 映射端口:在IPC客户端创建后,需要将RPIDSMStateMachineState端口映射到STM提供的相应端口上,以确保IdsM能够正确接收STM的状态信息。
小 结
4.1 IDSM(IdsM)配置与集成小结
定义需要被监控和处理的安全事件。
配置每个安全事件的详细参数,如优先级和处理方式。
确保安全事件的报告和处理与系统的其他部分无缝集成。
利用SecXT模型的参数为每个安全事件配置默认的报告方式。
报告模式包括OFF、BRIEF、DETAILED等,以满足不同的安全需求。
为IdsM模块创建一个实例化对象,提供必要的配置信息。
设置平台模块以太网端点,配置IPv4地址和TCP端口。
将IdsM模块实例化对象添加到软件集群中。
设置IdsmProperties元素,代表一组SEv过滤器。
添加不同类型的过滤器,如速率限制过滤器和流量限制过滤器。
过滤链包括状态过滤器、采样过滤器、聚合过滤器和阈值过滤器等。
创建IdsM实例,保存并管理可报告给ECU/机器的安全事件过滤器的配置。
在IDSM配置页面添加IdsM速率限制和流量限制引用条件。
创建应用程序软件组件类型,并添加RPort用于接收和报告安全事件。
分配可执行文件,确保应用程序能够正确运行。
建立安全事件过滤链,包括聚合过滤器、事件过滤器和阈值过滤器等。
创建软件组件,指派安全事件到进程。
建立端口映射,设置安全上下文事件映射。
在IdsM配置选项卡中创建上下文映射,并添加相关条件。
添加可报告的安全事件,设置RPort In组合实例引用。
分配安全事件到进程,形成完整的事件定义到事件报告和管理的链条。
允许集成商自定义配置各类安全事件的触发条件和报告方式。
涵盖广泛的安全告警和异常检测场景,如事件缓冲区不可用、流量限制超出等。
提供注册回调的方法,通过API RegisterTimestampProvider来实现。
SEv可以附带时间戳,精确记录事件发生的时间点。
时间戳可以由事件报告接口、应用软件或IdsM内部的时间管理堆栈提供。
SWCL和FC可以利用IdsM API创建新的安全事件。
构造InstanceSpecifier对象,创建EventReporter对象,并调用ReportEvent函数报告事件。
当自适应应用程序检测到安全事件时,通过IdsM的ReportEvent API进行报告。
构造EventReporter对象,并调用其ReportEvent方法来报告检测到的安全事件。
EventReporter类提供了多种ReportEvent方法,用于报告安全事件。
生命周期管理涉及IdsM的初始化和去初始化阶段,确保IdsM在系统运行期间的正确启动和关闭。
4.2 IDS的构成组件
安全传感器(Security Sensor):这一组件主要由AUTOSAR基础软件(BSW)模块、复杂驱动描述(CDD)以及软件组件(SWC)构成。它们负责监测系统的安全状态,并在检测到潜在威胁时,向入侵检测系统管理器(IdsM)报告安全事件(SEv)。 入侵检测系统管理器(IdsM):IdsM是IDS的中枢,负责接收并处理来自安全传感器的安全事件。它通过分析这些事件来评估系统的安全状况。 安全事件存储器(SEM):这是一个独立的诊断事件存储器,用于存储用户定义的安全事件。它与主要的诊断事件存储器相分离,确保安全事件的记录与常规诊断事件相区分。 入侵检测系统报告器(IdsR):IdsR负责从各个ECU的IdsM实例中收集并处理已处理的安全事件。它能够将这些信息整合起来,为系统管理员或安全团队提供全面的安全状况概览。
4.3 IdsM的核心功能
事件生成:通过IdsM的API,软件组件(SWCL)和功能组件(FC)能够生成新的安全事件,以便对潜在威胁进行记录和分析。 事件报告:IdsM支持多种报告模式和过滤链,以便对安全事件进行灵活处理。这有助于确保只有最相关和最关键的安全信息被传递给相关方。 上下文数据修改:IdsM允许对安全事件的上下文数据进行修改,以提供更准确和完整的威胁分析。 时间戳添加:为每个安全事件添加时间戳,有助于追踪威胁发生的时间线,为事件分析提供关键的时间信息。 访问控制:IdsM实施严格的访问控制策略,确保只有授权的进程能够生成、修改和报告安全事件。 诊断访问:IdsM支持读取持久化存储的安全事件,并允许重新配置报告模式,以满足不同的安全需求和诊断要求。
4.4 IdsM的访问控制策略
事件生成:限制哪些进程具有生成安全事件的权限,以防止未经授权的实体创建虚假的安全事件。 上下文数据修改:对能够修改安全事件上下文数据的进程进行限制,确保数据的准确性和完整性。 时间戳提供:控制哪些进程能够为安全事件提供时间戳,以防止时间戳被恶意篡改。 报告模式修改:限制哪些进程能够修改和查询报告模式,以确保报告策略的一致性和安全性。 合格事件接收:对能够接收并处理合格安全事件的进程进行限制,确保这些信息只能被授权实体访问和利用。
-end-
本专栏是由汽车电子与软件打造的中立性技术科普专栏,将系统地阐述软件定义汽车下的关键挑战和工程实践。欢迎订阅本专栏!