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).
ClustergidsAI-GEGENEREERD
Waarborgt boordbeveiliging door cryptografische diensten, PDU-authenticatie, sleutelbeheer en gebeurtenisdetectie.
Waarborgt boordbeveiliging door cryptografische diensten, PDU-authenticatie, sleutelbeheer en gebeurtenisdetectie.
Het cluster Security & Intrusion Detection stelt cryptografische primitieven via CSM, CryIf en Crypto Driver beschikbaar, beschermt I-PDU's met authenticatiegegevens via SecOC en beheert zowel sleutels als certificaten met KeyM AUTOSAR_CP_SWS_CryptoServiceManager p. 21. Beveiligingsincidenten worden als events aan de IdsM gemeld, daar gebufferd en asynchroon gefilterd [SWS_IdsM_00702]. Bij het afsluiten beschermt het actief wissen van RAM-sleutelgegevens tegen onbevoegde compromittering.
Het modulecluster Security & Intrusion Detection verenigt de modules secoc, idsm, keym, csm, cryif en crypto voor de beveiliging van de voertuigcommunicatie en voor de detectie van beveiligingsincidenten in het AUTOSAR Classic Platform AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21. De cryptografische basisdiensten worden hiërarchisch via de Crypto Service Manager (CSM) aangeboden, die jobs in Crypto_JobType-structuren inkapselt [SWS_Csm_01013] en via de Crypto Interface (CryIf_ProcessJob [SWS_CryIf_91003]) doorstuurt naar de specifieke hardware- of softwarestuurprogrammaobjecten van de Crypto Driver.
De PDU-communicatie wordt door SecOC beschermd via message authentication codes (MAC) en versheidswaarden ([SWS_SecOC_91006], [SWS_SecOC_00012]), terwijl de Key Manager (KeyM) certificaten en sleutels voor de CSM voorbereidt, actualiseert en valideert ([SWS_KeyM_00052], [SWS_KeyM_00059]). Beveiligingsrelevante gebeurtenissen – zoals mislukte PDU-controles – worden als Security Events (SEv) aan de IdsM gemeld [SWS_IdsM_91002], die deze synchroon buffert [SWS_IdsM_00701] en asynchroon via configureerbare filterketens kwalificeert [SWS_IdsM_01020].
Architectuurdiagram: lagenarchitectuur en interfacelinks van het security- en intrusion-detection-cluster. Bronnen: AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21, AUTOSAR_CP_SWS_CryptoServiceManager p. 21.
De uitvoering scheidt synchrone API-instappunten van rekenintensieve achtergrondtaken in IdsM_MainFunction, SecOC_MainFunctionTx [SWS_SecOC_00176] en KeyM_MainBackgroundFunction [SWS_KeyM_00075]. Bij fouten of bij overbelasting van het systeem (CRYPTO_E_BUSY) waarborgen fallback-mechanismen zoals standaard authenticatiepatronen in SecOC [SWS_SecOC_91013] en NvM-rollbacks in de IdsM [SWS_IdsM_01702] de stabiliteit van het totale systeem; bij het afsluiten wist KeyM actief RAM-sleutelmateriaal volledig [SWS_KeyM_00047].
Systeemarchitectuur & rol van het modulecluster
Het modulecluster Security & Intrusion Detection van het AUTOSAR Classic Platform (Release R20-11) levert gestandaardiseerde diensten voor cryptografie, veilige boordeigen communicatie, sleutel- en certificaatbeheer evenals aanvalsdetectie. Functioneel is het cluster onderverdeeld over meerdere lagen van de AUTOSAR Basic Software (BSW): op serviceniveau kapselt de Crypto Service Manager (CSM) hardwareonafhankelijke cryptografische diensten in AUTOSAR_CP_SWS_CryptoServiceManager p. 21. De veilige communicatie van I-PDU's wordt verzorgd door de module Secure Onboard Communication (SecOC) in de communicatielaag [SWS_SecOC_00162], terwijl de Key Manager (KeyM) als beveiligingsdienst de levenscyclus van cryptografische sleutels en certificaten orchestreert SWS_KeyManager p. 31. Aanvullend fungeert de Intrusion Detection System Manager (IdsM) als centrale aggregator en filter voor beveiligingsrelevante gebeurtenissen in het totale systeem AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21.
Onder de CSM abstraheert de Crypto Interface (CryIf) als laag CryIf de hardware- of softwarespecifieke toegang tot meerdere cryptografische stuurprogrammaobjecten en uniformiseert het opdracht- en sleuteldispatchmechanisme SWS_CryptoInterface p. 1. Op MCAL- en stuurprogrammaniveau voert de Crypto Driver (Crypto) de daadwerkelijke berekeningen in software of op hardware security modules (HSM) uit [SWS_Crypto_91016]. De interactie tussen deze lagen waarborgt een volledige ontkoppeling van de applicatiesoftware (SW-C) en communicatiemodules van de hardwarespecifieke cryptoversnellers.
Architectuurdiagram: lagenarchitectuur en interfacelinks van het security- en intrusion-detection-cluster. Bronnen: AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21, AUTOSAR_CP_SWS_CryptoServiceManager p. 21.
Samenspel & interactiepaden tussen de modules
De modules van het cluster zijn via duidelijk gedefinieerde controle- en gegevensstroompaden met elkaar verbonden. De verwerking van cryptografische jobs vindt primair via de CSM plaats. Applicatiemodules of BSW-modules zoals SecOC en KeyM initiëren opdrachten via CSM-services zoals 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] of Csm_RandomGenerate [SWS_Csm_01543]. De opdrachten worden ingekapseld in de gestandaardiseerde runtime-structuur Crypto_JobType [SWS_Csm_01013], die via bedrijfsmodi (Crypto_OperationModeType zoals CRYPTO_OPERATIONMODE_START, UPDATE, FINISH of SINGLECALL) wordt aangestuurd [SWS_Csm_00802]. De CSM draagt de job over aan CryIf_ProcessJob [SWS_CryIf_91003], die de aanroep doorstuurt naar het verantwoordelijke crypto-stuurprogrammaobject.
De module SecOC beveiligt de PDU-overdracht tussen PduR en communicatiebus. Bij ontvangst van een beveiligde PDU via SecOC_TpRxIndication [SWS_SecOC_00125] haalt SecOC eerst versheidswaarden op via SecOC_GetRxFreshnessAuthData [SWS_SecOC_91006] en construeert de te authenticeren gegevens conform specificatie SecOcProtocol p. 19. Voor MAC-verificatie maakt SecOC gebruik van de CSM [SWS_SecOC_00012]. Na een succesvolle controle wordt de authentieke PDU aan de hogere lagen overgedragen. Als de verificatie mislukt, wordt het resultaat in de status SecOC_VerificationStatusType geregistreerd [SWS_SecOC_00160], [SWS_SecOC_91014]; interpretatie: dit mislukken wordt als Security Event aan de IdsM gemeld AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21. Vraag Q-8cfd1660757f3f1f (open)
In de Key Manager (KeyM) worden sleutel- en certificaatupdates voorbereid en voltrokken. Bij certificaatverificaties (bijv. via KeyM_VerifyCertificates [SWS_KeyM_00059] of KeyM_VerifyCertificateChain [SWS_KeyM_00061]) benut KeyM de cryptografische primitieven van de CSM voor handtekeningcontrole en externe tijdbases van de StbM voor geldigheidscontrole SWS_KeyManager p. 119. Sleutelupdates (KeyM_Update [SWS_KeyM_00052]) integreren gebruikersspecifieke handlers (KeyM_KH_Update [SWS_KeyM_00069], [SWS_KeyM_00055]), waarbij resulterende sleutelbytes via Csm_KeyElementSet [SWS_Csm_00957] en Csm_JobKeySetValid [SWS_Csm_91027] in het crypto-stuurprogramma worden geactiveerd. Sleutelafleidingen en kopieerbewerkingen stuurt CryIf via CryIf_KeyDerive [SWS_CryIf_91009] resp. CryIf_KeyElementCopy [SWS_CryIf_91015] door naar stuurprogrammafuncties zoals Crypto_KeyElementCopyPartial [SWS_Crypto_91015].
De IdsM verzamelt beveiligingsgebeurtenissen (Security Events, SEv) van BSW-sensoren (waaronder SecOC) en applicatie-SW-C's via interfaces zoals IdsM_SetSecurityEvent [SWS_IdsM_91002] of IdsM_SetSecurityEventWithCount [SWS_IdsM_91018]. De events worden gebufferd, via filterketens (bijv. Block State Filter [SWS_IdsM_01020] of aggregatiefilters AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 40) gekwalificeerd en ten slotte via PduR doorgestuurd [SWS_IdsM_91009], [SWS_IdsM_91010].
Sequentiediagram: verificatie van een beveiligde PDU in SecOC met gebruikmaking van de crypto-stack en melding van beveiligingsgebeurtenissen aan de IdsM. Bronnen: [SWS_SecOC_00125], [SWS_SecOC_00012], [SWS_CryIf_91003], [SWS_CryIf_91013], [SWS_IdsM_91002].
Synchronisatie, re-entrantie en taakcontexten
De uitvoering van cryptografische berekeningen en beveiligingsoperaties vereist een strikte scheiding van synchrone aanroeppaden en asynchrone taakcontexten. In de CSM en CryIf hangt het uitvoeringsgedrag af van de configuratie van de cryptoprimitieven: operaties kunnen synchroon blokkerend of asynchroon verlopen [SWS_Csm_00982], [SWS_CryIf_91003]. Bij asynchrone jobs meldt de Crypto Driver de voltooiing via CryIf_CallbackNotification [SWS_CryIf_91013], waarna CSM de geregistreerde callbackfunctie van de aanroeper bedient [SWS_SecOC_00012]. Voor onderbreekbare of langer lopende berekeningen stelt de CSM de annuleringsfunctie Csm_CancelJob beschikbaar [SWS_Csm_00968], die via CryIf_CancelJob [SWS_CryIf_91014] aan het stuurprogramma wordt gedelegeerd.
De overdracht in de module SecOC wordt tijdgestuurd ontkoppeld: in periodieke cycli controleert SecOC_MainFunctionTx of er nieuwe authentieke PDU's klaarstaan voor ondertekening, berekent de authenticators en initieert de PduR-verzending [SWS_SecOC_00176]. In de IdsM vindt de opname van gemelde gebeurtenissen met hoge performantie plaats in de sensorcontext (taak of ISR) via IdsM_SetSecurityEvent [SWS_IdsM_91002], waarbij de events eerst synchroon in configureerbare event-buffers worden opgeslagen [SWS_IdsM_00701], [SWS_IdsM_00702]. De tijdrovende filtering, contextgegevensverwerking en tijdstempelverrijking via StbM of RTE wordt volledig asynchroon in de context van de periodieke IdsM_MainFunction verwerkt SWS_IntrusionDetectionSystemManager p. 87, AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 86.
De Key Manager maakt onderscheid tussen tijdkritische en rekenintensieve taken: terwijl standaard statusopvragingen en callback-orchestraties in KeyM_MainFunction lopen [SWS_KeyM_00074], is voor rekenintensieve synchrone handler-processen (zoals KeyM_KH_Update) de uitvoering in een preëmptieve achtergrondfunctie KeyM_MainBackgroundFunction voorzien [SWS_KeyM_00075]. In multicore-architecturen ondersteunt de CSM bovendien partitiespecifieke hoofdfuncties en initialisaties [SWS_Csm_00646], SWS_CryptoInterface p. 1; interpretatie: deze partitionering correspondeert met de toewijzing van dedicated hardware-stuurprogrammaobjecten per processorkern. Vraag (open)
Typische levenscycli en bedrijfsmodi
De initialisatie van het cluster volgt een strikte afhankelijkheidshiërarchie van onder naar boven. Eerst worden de hardwarenabije stuurprogramma's via Crypto_Init geconfigureerd [SWS_Crypto_91016], gevolgd door de interface CryIf [SWS_CryIf_91118] en de CSM via Csm_Init [SWS_Csm_00646]. Pas daarna mogen de afhankelijke modules SecOC, KeyM en IdsM worden geïnitialiseerd. SecOC wisselt door de initialisatie van de toestand SECOC_UNINIT naar SECOC_INIT [SWS_SecOC_00162]. In KeyM krijgen alle geconfigureerde certificaten initieel de status KEYM_CERTIFICATE_NOT_AVAILABLE [SWS_KeyM_00021], [SWS_KeyM_91003], voordat ze uit het NvM worden gelezen of via KeyM_SetCertificate resp. diagnose worden geladen en geverifieerd SWS_KeyManager p. 119.
Tijdens runtime beïnvloeden voertuigtoestandswisselingen de bedrijfsmodus van de IdsM: de Basic Software Manager (BswM) deelt toestandsveranderingen aan de IdsM mee via IdsM_BswM_StateChanged [SWS_IdsM_91005]. Deze toestanden besturen het Block State Filter [SWS_IdsM_01020], [SWS_IdsM_91017], waardoor in bepaalde bedrijfsfasen (bijv. programmeermodus of slaapfasen) het doorsturen van beveiligingsgebeurtenissen wordt onderdrukt. Daarnaast kunnen rapportagemodi van events via DCM diagnostisch worden gewijzigd (IdsM_Dcm_SetReportingMode_Start [SWS_IdsM_91008], [SWS_IdsM_91013]) en persistent in het NvM worden opgeslagen [SWS_IdsM_01700], [SWS_IdsM_01701].
Bij het afsluiten van het regeleenheid (shutdown) worden de modules ordentelijk gede-initialiseerd. SecOC_DeInit stopt de veilige communicatie, leegt alle interne buffers en variabelen en brengt SecOC terug naar de toestand SECOC_UNINIT [SWS_SecOC_00161]. Bij het aanroepen van KeyM_Deinit [SWS_KeyM_00047] wordt om veiligheidsredenen al het in het RAM aanwezige cryptografische sleutelmateriaal actief vernietigd en met initiële waarden overschreven om ongeoorloofd uitlezen in de rusttoestand te voorkomen.
Foutafhandeling, DET-tracing en degradatie
Het modulecluster implementeert doorlopende mechanismen voor de detectie van ontwikkelingsfouten (Development Error Tracer, DET) en runtime-problemen. Alle modules controleren hun initialisatie en melden bij een ongeïnitialiseerde aanroep DET-fouten, bijvoorbeeld CRYIF_E_UNINIT in CryIf-interfaces zoals CryIf_RandomSeed [SWS_CryIf_91007], CryIf_CancelJob [SWS_CryIf_91014], CryIf_KeyDerive [SWS_CryIf_91009] of CryIf_CallbackNotification [SWS_CryIf_91013]. Evenzo leiden foutieve pointerparameters tot DET-meldingen, zoals CRYPTO_E_PARAM_POINTER in Crypto_GetVersionInfo [SWS_Crypto_91001], terwijl initialisatiefouten in de CSM met CSM_E_INIT_FAILED worden gemeld [SWS_Csm_00646].
Bij overbelasting of uitval van crypto-hardwareobjecten signaleert het stuurprogramma de status CRYPTO_E_BUSY [SWS_CryIf_91003], [SWS_Csm_00957]. In dergelijke degradatiescenario's staat SecOC via SecOC_SendDefaultAuthenticationInformation het configureerbaar verzenden van ongeauthenticeerde vervangende PDU's naar de lagere lagen toe om de voertuigbeschikbaarheid te handhaven [SWS_SecOC_91013]. In de IdsM leidt uitputting van de geconfigureerde gebeurtenisbuffers tot het activeren van de interne beveiligingsgebeurtenis SEV_IDSM_NO_EVENT_BUFFER_AVAILABLE [SWS_IdsM_00703]. Mislukt de NvM-persistentie van gewijzigde IdsM-parameters, dan voert de IdsM een automatische rollback naar de vorige toestand uit [SWS_IdsM_01702]. Treedt bij het instellen van sleutels in Csm_KeyElementSet een fout op, dan geldt de status van het sleutelelement als ongedefinieerd en moet deze via Csm_KeyGetStatus [SWS_Csm_91047] en CryIf_KeyGetStatus [SWS_CryIf_91012] worden gevalideerd.
Deze handleiding is gebaseerd op de AUTOSAR-specificaties van het Classic Platform voor Release R20-11 en vat de architectuur van het cluster Security & Intrusion Detection samen.
Initialisatie en status
IdsM_GetVersionInfoIdsM_InitKeyM_DeinitKeyM_GetVersionInfoKeyM_InitSecOC_DeInitSecOC_GetVersionInfoSecOC_InitDiensten · Set…
Diensten · Get…
Diensten · Verify…
Diensten · Cert…
Diensten · Certificate…
Diensten · Crypto…
Diensten · Dcm…
Diensten · K…
Diensten · Tp…
Diensten · Overige
IdsM_BswM_StateChangedKeyM_FinalizeKeyM_MainBackgroundFunctionKeyM_PrepareKeyM_ServiceCertificateCallbackNotificationKeyM_StartSecOC_IfCancelTransmitSecOC_IfTransmitSecOC_SendDefaultAuthenticationInformationCallbacks
IdsM_CopyTxDataIdsM_TpTxConfirmationIdsM_TxConfirmationSecOC_CopyRxDataSecOC_CopyTxDataSecOC_RxIndicationSecOC_SPduTxConfirmationSecOC_StartOfReceptionSecOC_TpRxIndicationSecOC_TpTxConfirmationSecOC_TriggerTransmitSecOC_TxConfirmationCallouts en verwachte interfaces
SecOC_VerificationStatusCalloutCyclisch
IdsM_MainFunctionKeyM_MainFunctionSecOC_MainFunctionRxSecOC_MainFunctionTxTypen
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_VerificationStatusTypeFuncties
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_VerifyStatusOverrideTypen
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_VerificationStatusTypeThemakaart
IdsM
21KeyM
42SecOC
33Geen elementgegevens voor deze release
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 · Duits origineel