AUTOSAR Classic Security & Intrusion Detection
Das Security-Cluster schützt vernetzte Fahrzeugfunktionen gegen Cyber-Bedrohungen durch Intrusion Detection (IdsM), kryptographische PDU-Authentifizierung und Freshness-Protection (SecOC) sowie Key- und Zertifikatsmanagement (KeyM).
Guía del clústerGENERADO POR IA
Garantiza la seguridad a bordo mediante servicios criptográficos, autenticación de PDU, gestión de claves y detección de eventos.
Garantiza la seguridad a bordo mediante servicios criptográficos, autenticación de PDU, gestión de claves y detección de eventos.
El cluster Security & Intrusion Detection proporciona primitivas criptográficas mediante CSM, CryIf y Crypto Driver, protege las I-PDU con datos de autenticación a través de SecOC y gestiona claves así como certificados con KeyM AUTOSAR_CP_SWS_CryptoServiceManager p. 21. Los incidentes de seguridad se notifican como eventos al IdsM, donde se almacenan en búfer y se filtran de forma asíncrona [SWS_IdsM_00702]. Durante el apagado, el borrado activo de datos de claves en RAM protege contra la filtración no autorizada.
El cluster de módulos Security & Intrusion Detection reúne los módulos secoc, idsm, keym, csm, cryif y crypto para proteger la comunicación del vehículo y detectar incidentes de seguridad en la AUTOSAR Classic Platform AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21. Los servicios criptográficos básicos se proporcionan jerárquicamente a través del Crypto Service Manager (CSM), que encapsula trabajos en estructuras Crypto_JobType [SWS_Csm_01013] y los reenvía a través de la Crypto Interface (CryIf_ProcessJob [SWS_CryIf_91003]) a los objetos de controlador específicos de hardware o software del Crypto Driver.
La comunicación de PDU se protege mediante SecOC mediante códigos de autenticación de mensajes (MAC) y valores de frescura ([SWS_SecOC_91006], [SWS_SecOC_00012]), mientras que el Key Manager (KeyM) prepara, actualiza y valida certificados y claves para el CSM ([SWS_KeyM_00052], [SWS_KeyM_00059]). Los eventos relevantes para la seguridad —como las comprobaciones fallidas de PDU— se notifican como Security Events (SEv) al IdsM [SWS_IdsM_91002], el cual los almacena en búfer sincrónicamente [SWS_IdsM_00701] y los califica asíncronamente mediante cadenas de filtros configurables [SWS_IdsM_01020].
Diagrama de arquitectura: arquitectura en capas y relaciones de interfaces del cluster de Security e Intrusion Detection. Fuentes: AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21, AUTOSAR_CP_SWS_CryptoServiceManager p. 21.
La ejecución separa los puntos de entrada síncronos de la API de las tareas en segundo plano de cálculo intensivo en IdsM_MainFunction, SecOC_MainFunctionTx [SWS_SecOC_00176] y KeyM_MainBackgroundFunction [SWS_KeyM_00075]. En caso de fallo o sobrecarga del sistema (CRYPTO_E_BUSY), mecanismos de reserva como los patrones de autenticación por defecto en SecOC [SWS_SecOC_91013] y los rollbacks de NvM en el IdsM [SWS_IdsM_01702] aseguran la estabilidad del sistema completo; durante el apagado, KeyM borra por completo el material de claves activo en RAM [SWS_KeyM_00047].
Arquitectura del sistema & rol del clúster de módulos
El cluster de módulos Security & Intrusion Detection de la AUTOSAR Classic Platform (Release R20-11) proporciona servicios estandarizados para criptografía, comunicación a bordo segura, gestión de claves y certificados, así como detección de intrusiones. Funcionalmente, el cluster se estructura a través de varias capas del software básico de AUTOSAR (BSW): a nivel de servicio, el Crypto Service Manager (CSM) encapsula servicios criptográficos independientes del hardware AUTOSAR_CP_SWS_CryptoServiceManager p. 21. La comunicación segura de I-PDU es asumida por el módulo Secure Onboard Communication (SecOC) en la capa de comunicación [SWS_SecOC_00162], mientras que el Key Manager (KeyM), como servicio de seguridad, orquesta el ciclo de vida de claves y certificados criptográficos SWS_KeyManager p. 31. De forma complementaria, el Intrusion Detection System Manager (IdsM) actúa como agregador central y filtro para eventos relevantes para la seguridad en todo el sistema AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21.
Por debajo del CSM, la Crypto Interface (CryIf) abstrae como capa CryIf el acceso específico de hardware o software a múltiples objetos de controlador criptográfico y unifica el mecanismo de despacho de órdenes y claves SWS_CryptoInterface p. 1. En el nivel de MCAL y controladores, el Crypto Driver (Crypto) ejecuta los cálculos reales en software o en módulos de seguridad de hardware (HSM) [SWS_Crypto_91016]. La interacción de estas capas garantiza un desacoplamiento completo del software de aplicación (SW-C) y de los módulos de comunicación respecto de los aceleradores criptográficos específicos de hardware.
Diagrama de arquitectura: arquitectura en capas y relaciones de interfaces del cluster de Security e Intrusion Detection. Fuentes: AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21, AUTOSAR_CP_SWS_CryptoServiceManager p. 21.
Interacción y rutas de interacción entre los módulos
Los módulos del cluster están interconectados a través de rutas de flujo de control y de datos claramente definidas. El procesamiento de trabajos criptográficos se realiza principalmente a través del CSM. Los módulos de aplicación o módulos de BSW como SecOC y KeyM inician órdenes a través de servicios de CSM como Csm_MacGenerate [SWS_Csm_00982], Csm_Encrypt [SWS_Csm_00984], Csm_AEADEncrypt [SWS_Csm_01023], Csm_SignatureGenerate [SWS_Csm_00992], Csm_Hash [SWS_Csm_00980] o Csm_RandomGenerate [SWS_Csm_01543]. Las órdenes se encapsulan en la estructura de tiempo de ejecución estandarizada Crypto_JobType [SWS_Csm_01013], la cual se controla mediante modos de operación (Crypto_OperationModeType como CRYPTO_OPERATIONMODE_START, UPDATE, FINISH o SINGLECALL) [SWS_Csm_00802]. El CSM entrega el trabajo a CryIf_ProcessJob [SWS_CryIf_91003], el cual reenvía la llamada al objeto de controlador criptográfico competente.
El módulo SecOC asegura la transferencia de PDU entre el PduR y el bus de comunicación. Al recibir una PDU protegida a través de SecOC_TpRxIndication [SWS_SecOC_00125], SecOC consulta primero valores de frescura a través de SecOC_GetRxFreshnessAuthData [SWS_SecOC_91006] y construye los datos a autenticar conforme a la especificación SecOcProtocol p. 19. Para la verificación del MAC, SecOC recurre al CSM [SWS_SecOC_00012]. Tras una comprobación correcta, la PDU auténtica se entrega a las capas superiores. Si la verificación falla, el resultado se registra en el estado SecOC_VerificationStatusType [SWS_SecOC_00160], [SWS_SecOC_91014]; interpretación: este fallo se notifica como Security Event al IdsM AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21. Pregunta Q-8cfd1660757f3f1f (abierta)
En el Key Manager (KeyM) se preparan y ejecutan las actualizaciones de claves y certificados. En las verificaciones de certificados (p. ej. a través de KeyM_VerifyCertificates [SWS_KeyM_00059] o KeyM_VerifyCertificateChain [SWS_KeyM_00061]), KeyM utiliza las primitivas criptográficas del CSM para la comprobación de firmas, así como bases de tiempo externas del StbM para la comprobación de validez SWS_KeyManager p. 119. Las actualizaciones de claves (KeyM_Update [SWS_KeyM_00052]) integran manejadores específicos del usuario (KeyM_KH_Update [SWS_KeyM_00069], [SWS_KeyM_00055]), activándose los bytes de clave resultantes en el controlador criptográfico a través de Csm_KeyElementSet [SWS_Csm_00957] y Csm_JobKeySetValid [SWS_Csm_91027]. Las derivaciones de claves y los procesos de copia son reenviados por CryIf a través de CryIf_KeyDerive [SWS_CryIf_91009] o CryIf_KeyElementCopy [SWS_CryIf_91015] a funciones de controlador como Crypto_KeyElementCopyPartial [SWS_Crypto_91015].
El IdsM recopila eventos de seguridad (Security Events, SEv) de sensores de BSW (entre ellos SecOC) así como de SW-C de aplicación a través de interfaces como IdsM_SetSecurityEvent [SWS_IdsM_91002] o IdsM_SetSecurityEventWithCount [SWS_IdsM_91018]. Los eventos se almacenan en búfer, se califican a través de cadenas de filtros (p. ej., Block State Filter [SWS_IdsM_01020] o filtro de agregación AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 40) y finalmente se reenvían a través de PduR [SWS_IdsM_91009], [SWS_IdsM_91010].
Diagrama de secuencia: verificación de una PDU protegida en SecOC mediante el uso de la pila criptográfica y notificación de eventos de seguridad al IdsM. Fuentes: [SWS_SecOC_00125], [SWS_SecOC_00012], [SWS_CryIf_91003], [SWS_CryIf_91013], [SWS_IdsM_91002].
Sincronización, reentrancia y contextos de tareas
La ejecución de cálculos criptográficos y operaciones de seguridad requiere una estricta separación entre rutas de llamada síncronas y contextos de tarea asíncronos. En el CSM y CryIf, el comportamiento de ejecución depende de la configuración de la primitiva criptográfica: las operaciones pueden ejecutarse de forma síncrona bloqueante o asíncrona [SWS_Csm_00982], [SWS_CryIf_91003]. En los trabajos asíncronos, el controlador criptográfico notifica la finalización a través de CryIf_CallbackNotification [SWS_CryIf_91013], tras lo cual el CSM atiende la función de retrollamada registrada del emisor de la llamada [SWS_SecOC_00012]. Para cálculos interrumpibles o de ejecución más prolongada, el CSM proporciona la función de cancelación Csm_CancelJob [SWS_Csm_00968], la cual se delega al controlador a través de CryIf_CancelJob [SWS_CryIf_91014].
La transmisión en el módulo SecOC se desacopla temporalmente: en ciclos periódicos, SecOC_MainFunctionTx comprueba si hay nuevas PDU auténticas pendientes de firma, calcula los autenticadores e inicia el envío a través de PduR [SWS_SecOC_00176]. En el IdsM, la recepción de los eventos notificados se realiza con alto rendimiento en el contexto del sensor (tarea o ISR) a través de IdsM_SetSecurityEvent [SWS_IdsM_91002], almacenándose inicialmente los eventos de forma síncrona en búferes de eventos configurables [SWS_IdsM_00701], [SWS_IdsM_00702]. El filtrado intensivo en tiempo, el procesamiento de datos de contexto y el enriquecimiento de marcas de tiempo a través de StbM o RTE se procesan de forma completamente asíncrona en el contexto de la periódica IdsM_MainFunction SWS_IntrusionDetectionSystemManager p. 87, AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 86.
El Key Manager distingue entre tareas críticas en el tiempo y tareas de cálculo intensivo: mientras que las consultas de estado estándar y las orquestaciones de retrollamadas se ejecutan en KeyM_MainFunction [SWS_KeyM_00074], para los flujos de manejadores síncronos de cálculo intensivo (como KeyM_KH_Update) está prevista la ejecución en una función en segundo plano apropiativa KeyM_MainBackgroundFunction [SWS_KeyM_00075]. En arquitecturas multinúcleo, el CSM admite además funciones principales e inicializaciones específicas de cada partición [SWS_Csm_00646], SWS_CryptoInterface p. 1; interpretación: esta partición se corresponde con la asignación de objetos de controlador de hardware dedicados a cada núcleo de procesador. Pregunta (abierta)
Ciclos de vida típicos y modos de funcionamiento
La inicialización del cluster sigue una estricta jerarquía de dependencias de abajo hacia arriba. En primer lugar, se configuran los controladores cercanos al hardware a través de Crypto_Init [SWS_Crypto_91016], seguidos por la interfaz CryIf [SWS_CryIf_91118] y el CSM a través de Csm_Init [SWS_Csm_00646]. Solo después de esto se pueden inicializar los módulos dependientes SecOC, KeyM e IdsM. Mediante la inicialización, SecOC pasa del estado SECOC_UNINIT a SECOC_INIT [SWS_SecOC_00162]. En el KeyM, todos los certificados configurados reciben inicialmente el estado KEYM_CERTIFICATE_NOT_AVAILABLE [SWS_KeyM_00021], [SWS_KeyM_91003], antes de leerse desde la NvM o de cargarse y verificarse a través de KeyM_SetCertificate o de diagnóstico SWS_KeyManager p. 119.
Durante el tiempo de ejecución, los cambios de estado del vehículo influyen en el modo de operación del IdsM: el Basic Software Manager (BswM) comunica los cambios de estado al IdsM a través de IdsM_BswM_StateChanged [SWS_IdsM_91005]. Estos estados controlan el Block State Filter [SWS_IdsM_01020], [SWS_IdsM_91017], con lo cual se suprime el reenvío de eventos de seguridad en determinadas fases de operación (p. ej., modo de programación o fases de suspensión). Además, los modos de reporte de eventos pueden modificarse por diagnóstico mediante el DCM (IdsM_Dcm_SetReportingMode_Start [SWS_IdsM_91008], [SWS_IdsM_91013]) y almacenarse de forma persistente en la NvM [SWS_IdsM_01700], [SWS_IdsM_01701].
Durante el apagado (shutdown) de la unidad de control, los módulos se desinicializan de forma ordenada. SecOC_DeInit detiene la comunicación segura, vacía todos los búferes internos y variables, y devuelve SecOC al estado SECOC_UNINIT [SWS_SecOC_00161]. Al llamar a KeyM_Deinit [SWS_KeyM_00047], por motivos de seguridad se destruye activamente todo el material de claves criptográficas que se encuentre en la RAM y se sobrescribe con valores iniciales, para evitar lecturas no autorizadas en el estado de reposo.
Tratamiento de errores, rastreo en DET y degradación
El cluster de módulos implementa mecanismos integrales para la detección de errores de desarrollo (Development Error Tracer, DET) y problemas en tiempo de ejecución. Todos los módulos comprueban su inicialización y notifican errores de DET en caso de llamadas no inicializadas, por ejemplo CRYIF_E_UNINIT en interfaces de CryIf como CryIf_RandomSeed [SWS_CryIf_91007], CryIf_CancelJob [SWS_CryIf_91014], CryIf_KeyDerive [SWS_CryIf_91009] o CryIf_CallbackNotification [SWS_CryIf_91013]. Del mismo modo, los parámetros de puntero defectuosos provocan notificaciones de DET, como CRYPTO_E_PARAM_POINTER en Crypto_GetVersionInfo [SWS_Crypto_91001], mientras que los errores de inicialización en el CSM se notifican con CSM_E_INIT_FAILED [SWS_Csm_00646].
En caso de sobrecarga o fallo de objetos de hardware criptográfico, el controlador señaliza el estado CRYPTO_E_BUSY [SWS_CryIf_91003], [SWS_Csm_00957]. En tales escenarios de degradación, SecOC permite a través de SecOC_SendDefaultAuthenticationInformation el envío configurable de PDU sustitutivas no autenticadas a las capas inferiores para mantener la disponibilidad del vehículo [SWS_SecOC_91013]. En el IdsM, el agotamiento de los búferes de eventos configurados provoca el disparo del evento de seguridad interno SEV_IDSM_NO_EVENT_BUFFER_AVAILABLE [SWS_IdsM_00703]. Si falla la persistencia en NvM de parámetros modificados del IdsM, el IdsM realiza un rollback automático al estado anterior [SWS_IdsM_01702]. Si se produce un error al establecer claves en Csm_KeyElementSet, el estado del elemento de clave se considera indefinido y debe validarse a través de Csm_KeyGetStatus [SWS_Csm_91047] y CryIf_KeyGetStatus [SWS_CryIf_91012].
Esta guía se basa en las especificaciones de AUTOSAR de la Classic Platform para la Release R20-11 y resume la arquitectura del cluster Security & Intrusion Detection.
Inicialización y estado
IdsM_GetVersionInfoIdsM_InitKeyM_DeinitKeyM_GetVersionInfoKeyM_InitSecOC_DeInitSecOC_GetVersionInfoSecOC_InitServicios · Set…
Servicios · Get…
Servicios · Verify…
Servicios · Cert…
Servicios · Certificate…
Servicios · Crypto…
Servicios · Dcm…
Servicios · K…
Servicios · Tp…
Servicios · Otros
IdsM_BswM_StateChangedKeyM_FinalizeKeyM_MainBackgroundFunctionKeyM_PrepareKeyM_ServiceCertificateCallbackNotificationKeyM_StartSecOC_IfCancelTransmitSecOC_IfTransmitSecOC_SendDefaultAuthenticationInformationCallbacks
IdsM_CopyTxDataIdsM_TpTxConfirmationIdsM_TxConfirmationSecOC_CopyRxDataSecOC_CopyTxDataSecOC_RxIndicationSecOC_SPduTxConfirmationSecOC_StartOfReceptionSecOC_TpRxIndicationSecOC_TpTxConfirmationSecOC_TriggerTransmitSecOC_TxConfirmationCallouts e interfaces esperadas
SecOC_VerificationStatusCalloutCíclico
IdsM_MainFunctionKeyM_MainFunctionSecOC_MainFunctionRxSecOC_MainFunctionTxTipos
IdsM_ConfigTypeIdsM_Filters_BlockStateTypeIdsM_Filters_ReportingModeTypeIdsM_SecurityEventIdTypeIdsM_TimestampTypeKeyM_CertDataPointerTypeKeyM_CertDataTypeKeyM_CertElementIdTypeKeyM_CertElementIteratorTypeKeyM_CertificateElementTypeKeyM_CertificateIdTypeKeyM_CertificateStatusTypeKeyM_ConfigTypeKeyM_CryptoKeyDataTypeKeyM_CryptoKeyIdTypeKeyM_KH_UpdateOperationTypeKeyM_ResultTypeKeyM_ServiceCertificateTypeKeyM_StartTypeMaxSecOC_ConfigTypeSecOC_FreshnessArrayTypeSecOC_OverrideStatusTypeSecOC_StateTypeSecOC_VerificationResultTypeSecOC_VerificationStatusTypeFunciones
IdsM_BswM_StateChangedIdsM_CopyTxDataIdsM_Dcm_GetReportingMode_RequestResultsIdsM_Dcm_GetReportingMode_StartIdsM_Dcm_SetReportingMode_StartIdsM_GetVersionInfoIdsM_InitIdsM_MainFunctionIdsM_SetSecurityEventIdsM_SetSecurityEventWithContextDataIdsM_SetSecurityEventWithCountIdsM_SetSecurityEventWithCountContextDataIdsM_SetSecurityEventWithTimestampCountIdsM_SetSecurityEventWithTimestampCountContextDataIdsM_TpTxConfirmationIdsM_TxConfirmationKeyM_CertElementGetKeyM_CertElementGetFirstKeyM_CertElementGetNextKeyM_CertGetStatusKeyM_CertificateElementGetByIndexKeyM_CertificateElementGetCountKeyM_CertificateVerifyCallbackNotificationKeyM_CryptoKeyFinalizeCallbackNotificationKeyM_CryptoKeyUpdateCallbackNotificationKeyM_CryptoKeyVerifyCallbackNotificationKeyM_DeinitKeyM_FinalizeKeyM_GetCertificateKeyM_GetVersionInfoKeyM_InitKeyM_KH_FinalizeKeyM_KH_PrepareKeyM_KH_StartKeyM_MainBackgroundFunctionKeyM_MainFunctionKeyM_PrepareKeyM_ServiceCertificateCallbackNotificationKeyM_SetCertificateKeyM_StartKeyM_VerifyCertificateKeyM_VerifyCertificateChainKeyM_VerifyCertificatesSecOC_CopyRxDataSecOC_CopyTxDataSecOC_DeInitSecOC_GetRxFreshnessSecOC_GetRxFreshnessAuthDataSecOC_GetTxFreshnessSecOC_GetTxFreshnessTruncDataSecOC_GetVersionInfoSecOC_IfCancelTransmitSecOC_IfTransmitSecOC_InitSecOC_MainFunctionRxSecOC_MainFunctionTxSecOC_RxIndicationSecOC_SendDefaultAuthenticationInformationSecOC_SPduTxConfirmationSecOC_StartOfReceptionSecOC_TpCancelReceiveSecOC_TpCancelTransmitSecOC_TpRxIndicationSecOC_TpTransmitSecOC_TpTxConfirmationSecOC_TriggerTransmitSecOC_TxConfirmationSecOC_VerificationStatusCalloutSecOC_VerifyStatusSecOC_VerifyStatusOverrideTipos
IdsM_ConfigTypeIdsM_Filters_BlockStateTypeIdsM_Filters_ReportingModeTypeIdsM_SecurityEventIdTypeIdsM_TimestampTypeKeyM_CertDataPointerTypeKeyM_CertDataTypeKeyM_CertElementIdTypeKeyM_CertElementIteratorTypeKeyM_CertificateElementTypeKeyM_CertificateIdTypeKeyM_CertificateStatusTypeKeyM_ConfigTypeKeyM_CryptoKeyDataTypeKeyM_CryptoKeyIdTypeKeyM_KH_UpdateOperationTypeKeyM_ResultTypeKeyM_ServiceCertificateTypeKeyM_StartTypeMaxSecOC_ConfigTypeSecOC_FreshnessArrayTypeSecOC_OverrideStatusTypeSecOC_StateTypeSecOC_VerificationResultTypeSecOC_VerificationStatusTypeMapa de temas
IdsM
21KeyM
42SecOC
33No hay datos de elementos para esta versión
IdsM
This callback function is invoked by the BswM to indicate ECU state changes.
void IdsM_BswM_StateChanged (IdsM_Filters_BlockStateType state);This function is called to acquire the transmit data of an I-PDU segment (N-PDU). Each call to this function provides the next part of the I-PDU data unless retry->TpDataState is TP_ DATARETRY. In this case the function restarts to copy the data beginning at the offset from the current position indicated by retry->TxTpDataCnt. The size of the remaining data is written to the position indicated by availableDataPtr.
BufReq_ReturnType IdsM_CopyTxData (PduIdType id, const PduInfoType* info, const RetryInfoType* retry, PduLengthType* availableDataPtr);This function is a request from DCM to the IdsM to read the routine results triggered by function IdsM_Dcm_GetReportingMode_Start().
Std_ReturnType IdsM_Dcm_GetReportingMode_RequestResults (Dcm_OpStatusType OpStatus, uint8* Out_ReportingMode, Dcm_NegativeResponseCodeType* ErrorCode);This function is a request from DCM to the IdsM to start the routine execution to request the current reporting mode of a specific Security Event ID.
Std_ReturnType IdsM_Dcm_GetReportingMode_Start (uint16 In_SecurityEventId, uint8 In_SensorInstanceId, Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);This function is a request from DCM to the IdsM to start the routine execution to set the reporting mode of a specific Security Event ID.
Std_ReturnType IdsM_Dcm_SetReportingMode_Start (uint16 In_SecurityEventId, uint8 In_SensorInstanceId, uint8 In_ReportingMode, Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);Returns version information, vendor ID and AUTOSAR module ID of the component.
void IdsM_GetVersionInfo (const Std_VersionInfoType* versionInfo);Service to initialize the module IdsM. It initializes all variables and sets the module state to initialized.
void IdsM_Init (const IdsM_ConfigType* configPtr);This function is called periodically. It processes security events asynchronously which are queued during API function calls.
void IdsM_MainFunction (void);This API is the application interface to report security events to the IdsM.
void IdsM_SetSecurityEvent (IdsM_SecurityEventIdType securityEventId);This API is the application interface to report security events with context data to the IdsM.
void IdsM_SetSecurityEventWithContextData (IdsM_SecurityEventIdType securityEventId, const uint8* contextData, uint16 contextDataSize);This API is the application interface for Smart Sensors to report security events with a count value to the IdsM.
void IdsM_SetSecurityEventWithCount (IdsM_SecurityEventIdType securityEventId, uint16 count);This API is the application interface for Smart Sensors to report security events with a count value and context data to the IdsM.
void IdsM_SetSecurityEventWithCountContextData (IdsM_SecurityEventIdType securityEventId, uint16 count, const uint8* contextData, uint16 contextDataSize);This API is the application interface for Smart Sensors to report security events with a timestamp and a count value to the IdsM.
void IdsM_SetSecurityEventWithTimestampCount (IdsM_SecurityEventIdType securityEventId, IdsM_TimestampType timestamp, uint16 count);This API is the application interface for Smart Sensors to report security events with a timestamp, a count value and context data to the IdsM.
void IdsM_SetSecurityEventWithTimestampCountContextData (IdsM_SecurityEventIdType securityEventId, IdsM_TimestampType timestamp, uint16 count, const uint8* contextData, uint16 contextDataSize);This function is called after the I-PDU has been transmitted on its network, the result indicates whether the transmission was successful or not.
void IdsM_TpTxConfirmation (PduIdType id, Std_ReturnType result);The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.
void IdsM_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);Configuration data structure of IdsM module.
Data type used for "Block State" filter values (bit masks)
Reporting modes used by the reporting mode filter
Data type used for local IdsM Security Event IDs
Data type for IdsM timestamps
KeyM
Service KeyM_CertElementGet.
Std_ReturnType KeyM_CertElementGet (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint8* CertElementData, uint32* CertElementDataLength);Service KeyM_CertElementGetFirst.
Std_ReturnType KeyM_CertElementGetFirst (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, KeyM_CertElementIteratorType* CertElementIterator, uint8* CertElementData, uint32* CertElementDataLength);Service KeyM_CertElementGetNext.
Std_ReturnType KeyM_CertElementGetNext (KeyM_CertElementIteratorType* CertElementIterator, uint8* CertElementData, uint32* CertElementDataLength);This function provides the sta tus of a certificate.
Std_ReturnType KeyM_CertGetStatus (KeyM_CertificateIdType CertId, KeyM_CertificateStatusType* Status);Service KeyM_CertificateElementGetByIndex.
Std_ReturnType KeyM_CertificateElementGetByIndex (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint32 Index, uint8* CertElementDataPtr, uint32* CertElementDataLengthPtr);This function provides the total number of data elements that a re available for the specified certificate element. Typically, only one data element is available. But in some cases, several data elements can be assigned to one certificate element in a row. This function retrieves the total number of elements. The indiv idual data elements can then accessed with Key M_ Certificate Element Get By Index(). It is similar to the functions Key M_ Cert Element Get First/ Key M_ Cert Element Get Next to retrieve a group of data elements of one certificate element. AUTOSAR CP R20 - of
Std_ReturnType KeyM_CertificateElementGetCount (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint16* CountPtr);Notifies the application that a certificate verification has been finished. The function name is configurable by Key MCertificate Verify Callback Notification Func. Availabl e via Key M_ Externals.h
Std_ReturnType KeyM_CertificateVerifyCallbackNotification (KeyM_CertificateIdType CertId, KeyM_CertificateStatusType Result);This function resets the key management module to the uninitialized state.
void KeyM_Deinit (void);The function is used to finalize key update operations. It is typi cally used in conjunction with the Key M_
Std_ReturnType KeyM_Finalize (const uint8* RequestDataPtr, uint16 RequestDataLength, uint8* ResponseDataPtr, uint16 ResponseMaxDataLength);This function provides the certificate data
Std_ReturnType KeyM_GetCertificate (KeyM_CertificateIdType CertId, KeyM_CertDataType* CertificateDataPtr);Provides the version information of this module.
void KeyM_GetVersionInfo (Std_VersionInfoType* VersionInfo);This function initializes the key management module.
void KeyM_Init (const KeyM_ConfigType* ConfigPtr);If Key MCrypto Key Start Finalize Function Enabled and Key MCrypto Key Handler Start Finalize Enabled is set to TRUE, this function will be called immediately when Key M_
Std_ReturnType KeyM_KH_Finalize (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);If the configuration parameters Key MCrypto Key Prepare Function Enabled and Key MCrypto Key Handler Prepare Enabled are both set to TRUE, then this function w ill be called immediately when Key M_ Prepare gets called. The function takes over the task to prepare a key management operation. The response data will be passed on as is to the caller of Key_ Prepare.
Std_ReturnType KeyM_KH_Prepare (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseDataPtr, uint16* ResponseDataLength);If Key MCrypto Key Start Finalize Function Enabled and Key MCrypto Key
Std_ReturnType KeyM_KH_Start (KeyM_StartType StartType, const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);Function is called from a pre - emptive operating system when no other task operation is needed. Can be used for calling time consuming synchronous functions such as Key M_ KH_ Update().
void KeyM_MainBackgroundFunction (void);Function is called periodically according the specified time interval.
void KeyM_MainFunction (void);This function is used to prepare a key update operation. The main intent is to provide information for the key operation to the key server. Other operations may start the negotiation for a common secret that is used further to derive key material. This function is only av ailable if Key MCrypto Key Prepare Function Enabled is set to TRUE.
Std_ReturnType KeyM_Prepare (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);Notifies the application that the certificate service operation has been finished. This function is used by the certificate submodule. Thi s callback is only provided if Key MService Certificate Function Enabled is set to TRUE. The function name is configurable by Key MService Certificate Callback Notification Func.
This function provides the certificate data to the key managem ent module to temporarily store the certificate.
Std_ReturnType KeyM_SetCertificate (KeyM_CertificateIdType CertId, const KeyM_CertDataType* CertificateDataPtr);This function is optional and only used if the configuration item Key MCrypto Key Start Finalize Function Enabled is set to true. It intents to allow key update operation.
Std_ReturnType KeyM_Start (KeyM_StartType StartType, const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);Service KeyM_VerifyCertificate.
Std_ReturnType KeyM_VerifyCertificate (KeyM_CertificateIdType CertId);Service KeyM_VerifyCertificateChain.
Std_ReturnType KeyM_VerifyCertificateChain (KeyM_CertificateIdType CertId, const KeyM_CertDataType[] certChainData, uint8 NumberOfCertificates);This function verifies two certificates that are stored and parsed internally against each other. The certificat e referenced with Cert Id was signed by the certificate referenced with cert Upper Id. Only these two certificates are validated against each other.
Std_ReturnType KeyM_VerifyCertificates (KeyM_CertificateIdType CertId, KeyM_CertificateIdType CertUpperId);Byte - pointer to the data of the certificate
This structure is used to exchange certificate data through interface functions.
Certificate Element handle.
This structure is used to iterate through a number of elements of a certificate.
Array long enough to store data
Certificate handle.
Type KeyM_CertificateStatusType.
This structure is the base type to initialize the Key Manager module. A pointer to an instance of this structure will be used in the initialization of the Key Manager module.
Byte - pointer to the input or output data
Crypto key handle.
Specifies the type of key handler update operation that was performed in the callback.
Specifies the result type of an asynchronous key management fu nction.
This type specifies the requested service operation and what information is provided with this function.
This type specifies in which mode the key operation will start. The OEM production mode provides higher privileges compared to workshop mode.
Array long enough to store the key or certificate name. base Type Encoding = UTF -
SecOC
This function is called to provide the received data of an I - PDU segment (N - PDU) to the upper layer. Each call to this function provides the next part of the I - PDU data. The si ze of the remaining buffer is written to the position indicated by buffer Size Ptr.
BufReq_ReturnType SecOC_CopyRxData (PduIdType id, const PduInfoType* info, PduLengthType* bufferSizePtr);Service SecOC_CopyTxData.
BufReq_ReturnType SecOC_CopyTxData (PduIdType id, const PduInfoType* info, const RetryInfoType* retry, PduLengthType* availableDataPtr);This service stops the secure onboard communication. All buffered I - PDU are removed and have to be obtained again, if needed, after Sec OC_ Init has been called. By a call to Sec OC_ De Init the AUTOSAR Sec OC module is put into a not in itialized state (Sec OC_ UNINIT).
void SecOC_DeInit (void);Service SecOC_GetRxFreshnessAuthData.
Std_ReturnType SecOC_GetRxFreshnessAuthData (uint16 SecOCFreshnessValueID, const uint8* SecOCTruncatedFreshnessValue, uint32 SecOCTruncatedFreshnessValueLength, const uint8* SecOCAuthDataFreshnessValue, uint16 SecOCAuthDataFreshnessValueLength, uint16 SecOCAuthVerifyAttempts, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);This API returns th e freshness value from the Most Significant Bits in the first byte in the array (Sec OCFreshness Value), in big endian format.
Std_ReturnType SecOC_GetTxFreshness (uint16 SecOCFreshnessValueID, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);Returns the version information of this module.
void SecOC_GetVersionInfo (Std_VersionInfoType* versioninfo);Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.
Std_ReturnType SecOC_IfCancelTransmit (PduIdType TxPduId);Requests transmission of a PDU.
Std_ReturnType SecOC_IfTransmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);Initializes the the Sec OC module. Successful initialization leads to state Sec OC_ INIT. In configurations, in which Sec OC is assigned to more than one partition (i.e. Sec OC_ Main Functions are mapped to partition s), Sec OC may provide one init AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_SecureOnboardCommunication function per partition. The decision on whether a single Sec OC_ Init() function or one per partition is provided is implementation - specific. In case a given implementation provides one Sec OC_ Init() function per partition, it is up to the implementation to devise a naming pattern that prevents name clashes among the different Sec OC_ Init() functions (e.g., by adding a suffix containing short name the Ecuc Partition.
void SecOC_Init (const SecOC_ConfigType* config);This function performs the processing of the Sec OC module's authentication and verification processing for the Rx path. Per configured Sec OCMain Function Rx instance one Sec OC_ Main Function Rx_ shall be implemented. Hereby is the short name of the Sec OCMain Function Rx configuration container in the ECU configuration.
void SecOC_MainFunctionRx (void);This function performs the processing of the Sec OC module's authentication and verification processing for the Tx path. Per configured Sec OCMain Function Tx instance one Sec OC_ Main Function Tx_ shall be implemented. Hereby is t he short name of the Sec OCMain Function Tx configuration container in the ECU configuration.
void SecOC_MainFunctionTx (void);Indication of a received PDU from a lower layer communication interface module.
void SecOC_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);The service provides the ability to enable the sending of un - authenticated PDU to lower layer. (example: in case authentication build counter has reached the configuration value Sec OCAuthentication Build Attempts or the query of the freshness function returns E_ NOT_ OK or the calculation of the authenticator has returned a non - recoverable error such as returning E_ NOT_ OK or KEY_ FAILURE). T his service is optional (the service is available only if Sec OCDefault Authentication Information Pattern is configured). If the service is not available or the service is available but the service was called with send Default
Std_ReturnType SecOC_SendDefaultAuthenticationInformation (uint16 FreshnessValueID, boolean sendDefaultAuthenticationInformation);This interface is used by the Sec OC to indicate that the Secured I - PDU has been initiated for transmission.
void SecOC_SPduTxConfirmation (uint16 SecOCFreshnessValueID);Service SecOC_StartReception.
BufReq_ReturnType SecOC_StartOfReception (PduIdType id, const PduInfoType* info, PduLengthType TpSduLength, PduLengthType* bufferSizePtr);Requests cancellation of an ongoing reception of a PDU in a lower layer transport protocol module.
Std_ReturnType SecOC_TpCancelReceive (PduIdType RxPduId);Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.
Std_ReturnType SecOC_TpCancelTransmit (PduIdType TxPduId);Called after an I - PDU has been received via the TP API, the result indicates whether the transmission was successful or not.
void SecOC_TpRxIndication (PduIdType id, Std_ReturnType result);Requests transmission of a PDU.
Std_ReturnType SecOC_TpTransmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);This function is called after the I - PDU has been transmitted on its network, the result indicates whether the transmission was successful or not.
void SecOC_TpTxConfirmation (PduIdType id, Std_ReturnType result);Within this API , the upper layer module (called module) shall check whether the available data fits into the buffer size reported by Pdu Info Ptr - >Sdu Length. If it fits, it shall copy its data into the buffer provided by Pdu Info Ptr - >Sdu Data Ptr and update the length of the actual copied data in Pdu Info Ptr - >Sdu Length. If not, it returns E_ NOT_ OK without changing Pdu Info Ptr.
Std_ReturnType SecOC_TriggerTransmit (PduIdType TxPduId, PduInfoType* PduInfoPtr);The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.
void SecOC_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);Service is used to propagate the status of each verification attempt from the Sec OC module to other modules. This service can be configured such that: Only: "False" Verifica tion Status is propagated to modules Both: "True" and "False" Verification Status are propagated to modules None: No Verification Status is propagated
void SecOC_VerificationStatusCallout (SecOC_VerificationStatusType verificationStatus);This s ervice provides the ability to inform the application about the result of the verification attempt of a received PDU by the Sec OC module.
void SecOC_VerifyStatus (SecOC_VerificationStatusType verificationStatus);Service SecOC_VerifyStatusOverride.
Std_ReturnType SecOC_VerifyStatusOverride (uint16 ValueID, SecOC_OverrideStatusType overrideStatus, uint8 numberOfMessagesToOverride);Configuration data structure of Sec OC module
-
Type SecOC_OverrideStatusType.
States of the Sec OC module
Enumeration to indicate veri fication results.
Data structure to bundle the status of a verification attempt for a specific Freshness Value and Data ID
Module im Cluster
Firewall (Fw)
AUTOSAR Classic Communication Services-Modul Firewall (Fw, Spezifikation: AUTOSAR_CP_SWS_Firewall.pdf).
Intrusion Detection System Manager (IdsM)
Collects and reports onboard security events to detect threats.
Key Manager (KeyM)
Manages lifecycle, storage, and distribution of cryptographic keys and certificates.
MACsec Key Agreement (Mka)
AUTOSAR Classic Communication Services-Modul MACsec Key Agreement (Mka, Spezifikation: AUTOSAR_CP_SWS_MACsecKeyAgreement.pdf, AUTOSAR_SWS_MACsecKeyAgreement.pdf).
Secure Onboard Communication (SecOC)
Provides cryptographic authentication and freshness protection for critical communication PDUs.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán