DEENESPTFRRUARHIKOZHNL

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).

Cluster GuideKI-GENERIERT

Gewährleistet Bordsicherheit durch Kryptodienste, PDU-Authentifizierung, Schlüsselverwaltung und Ereigniserkennung.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 2b0b830492f5 Herkunft Offene Fragen (2)
Kausaler Anker: R20-11 Gültig ab R20-11 Neu synthetisiert für diesen Spezifikationsstand.
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Gewährleistet Bordsicherheit durch Kryptodienste, PDU-Authentifizierung, Schlüsselverwaltung und Ereigniserkennung.

Das Cluster Security & Intrusion Detection stellt kryptografische Primitive via CSM, CryIf und Crypto Driver bereit, schützt I-PDUs mit Authentifikationsdaten über SecOC und verwaltet Schlüssel sowie Zertifikate mit KeyM AUTOSAR_CP_SWS_CryptoServiceManager S. 21. Sicherheitsvorfälle werden als Events an den IdsM gemeldet, dort gepuffert und asynchron gefiltert [SWS_IdsM_00702]. Beim Shutdown schützt das aktive Löschen von RAM-Schlüsseldaten vor unbefugter Kompromittierung.

Das Modulcluster Security & Intrusion Detection vereint die Module secoc, idsm, keym, csm, cryif und crypto zur Absicherung der Fahrzeugkommunikation und zur Erkennung von Sicherheitsvorfällen in der AUTOSAR Classic Platform AUTOSAR_CP_SWS_IntrusionDetectionSystemManager S. 21. Die kryptografischen Grunddienste werden hierarchisch über den Crypto Service Manager (CSM) bereitgestellt, der Jobs in Crypto_JobType-Strukturen kapselt [SWS_Csm_01013] und über das Crypto Interface (CryIf_ProcessJob [SWS_CryIf_91003]) an die spezifischen Hardware- oder Software-Treiberobjekte des Crypto Drivers weiterleitet.

Die PDU-Kommunikation wird durch SecOC über Nachrichtenauthentifizierungscodes (MAC) und Frischewerte geschützt ([SWS_SecOC_91006], [SWS_SecOC_00012]), während der Key Manager (KeyM) Zertifikate und Schlüssel für den CSM vorbereitet, aktualisiert und validiert ([SWS_KeyM_00052], [SWS_KeyM_00059]). Sicherheitsrelevante Ereignisse – wie fehlgeschlagene PDU-Prüfungen – werden als Security Events (SEv) an den IdsM gemeldet [SWS_IdsM_91002], welcher sie synchron puffert [SWS_IdsM_00701] und asynchron über konfigurierbare Filterketten qualifiziert [SWS_IdsM_01020].

SecArch SWC Application SW-Cs / Sensors IdsM IdsM (Intrusion Detection System Manager) SWC->IdsM IdsM_SetSecurityEvent SecOC SecOC (Secure Onboard Communication) SecOC->IdsM Security Events CSM CSM (Crypto Service Manager) SecOC->CSM Csm_MacGenerate / Csm_MacVerify PduR PduR (PDU Router) SecOC->PduR Secured / Authentic I-PDUs KeyM KeyM (Key Manager) KeyM->CSM Csm_KeyElementSet / Primitives CryIf CryIf (Crypto Interface) CSM->CryIf CryIf_ProcessJob / Key APIs Crypto Crypto Driver (Hardware / Software) CryIf->Crypto Crypto_ProcessJob / Driver Objects PduR->SecOC PDU Reception / Transmission

Architekturdiagramm: Schichtenarchitektur und Schnittstellenbeziehungen des Security- und Intrusion-Detection-Clusters. Quellen: AUTOSAR_CP_SWS_IntrusionDetectionSystemManager S. 21, AUTOSAR_CP_SWS_CryptoServiceManager S. 21.

Die Ausführung trennt synchrone API-Einstiege von rechenintensiven Hintergrundaufgaben in IdsM_MainFunction, SecOC_MainFunctionTx [SWS_SecOC_00176] und KeyM_MainBackgroundFunction [SWS_KeyM_00075]. Im Fehlerfall oder bei Systemüberlastung (CRYPTO_E_BUSY) sichern Fallback-Mechanismen wie Standard-Authentifizierungs-Muster in SecOC [SWS_SecOC_91013] und NvM-Rollbacks im IdsM [SWS_IdsM_01702] die Stabilität des Gesamtsystems; beim Herunterfahren löscht KeyM aktives RAM-Schlüsselmaterial vollständig [SWS_KeyM_00047].

Systemarchitektur & Rolle des Modulclusters

Das Modulcluster Security & Intrusion Detection der AUTOSAR Classic Platform (Release R20-11) stellt standardisierte Dienste für Kryptografie, sichere bordeigene Kommunikation, Schlüssel- und Zertifikatsverwaltung sowie Angriffserkennung bereit. Funktional gliedert sich das Cluster über mehrere Schichten der AUTOSAR-Basissoftware (BSW): Auf der Service-Ebene kapselt der Crypto Service Manager (CSM) hardwareunabhängige kryptografische Dienste AUTOSAR_CP_SWS_CryptoServiceManager S. 21. Die sichere Kommunikation von I-PDUs übernimmt das Modul Secure Onboard Communication (SecOC) in der Kommunikationsschicht [SWS_SecOC_00162], während der Key Manager (KeyM) als Sicherheitsdienst den Lebenszyklus kryptografischer Schlüssel und Zertifikate orchestriert SWS_KeyManager S. 31. Ergänzend agiert der Intrusion Detection System Manager (IdsM) als zentraler Aggregator und Filter für sicherheitsrelevante Ereignisse im Gesamtsystem AUTOSAR_CP_SWS_IntrusionDetectionSystemManager S. 21.

Unterhalb des CSM abstrahiert das Crypto Interface (CryIf) als Schicht CryIf den hardware- oder softwarespezifischen Zugriff auf mehrere kryptografische Treiberobjekte und vereinheitlicht den Auftrags- und Schlüsseldispatching-Mechanismus SWS_CryptoInterface S. 1. Auf der MCAL- und Treiber-Ebene führt der Crypto Driver (Crypto) die eigentlichen Berechnungen in Software oder auf Hardware-Sicherheitsmodulen (HSM) aus [SWS_Crypto_91016]. Das Zusammenspiel dieser Schichten gewährleistet eine vollständige Entkopplung der Anwendungssoftware (SW-C) und Kommunikationsmodule von den hardwarespezifischen Kryptobeschleunigern.

SecArch SWC Application SW-Cs / Sensors IdsM IdsM (Intrusion Detection System Manager) SWC->IdsM IdsM_SetSecurityEvent SecOC SecOC (Secure Onboard Communication) SecOC->IdsM Security Events CSM CSM (Crypto Service Manager) SecOC->CSM Csm_MacGenerate / Csm_MacVerify PduR PduR (PDU Router) SecOC->PduR Secured / Authentic I-PDUs KeyM KeyM (Key Manager) KeyM->CSM Csm_KeyElementSet / Primitives CryIf CryIf (Crypto Interface) CSM->CryIf CryIf_ProcessJob / Key APIs Crypto Crypto Driver (Hardware / Software) CryIf->Crypto Crypto_ProcessJob / Driver Objects PduR->SecOC PDU Reception / Transmission

Architekturdiagramm: Schichtenarchitektur und Schnittstellenbeziehungen des Security- und Intrusion-Detection-Clusters. Quellen: AUTOSAR_CP_SWS_IntrusionDetectionSystemManager S. 21, AUTOSAR_CP_SWS_CryptoServiceManager S. 21.

Zusammenspiel & Interaktionspfade zwischen den Modulen

Die Module des Clusters sind über klar definierte Kontroll- und Datenflusspfade miteinander verknüpft. Die Verarbeitung kryptografischer Jobs erfolgt primär über den CSM. Anwendungsmodule oder BSW-Module wie SecOC und KeyM initiieren Aufträge über CSM-Services wie 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] oder Csm_RandomGenerate [SWS_Csm_01543]. Die Aufträge werden in der standardisierten Laufzeitstruktur Crypto_JobType gekapselt [SWS_Csm_01013], welche über Betriebsmodi (Crypto_OperationModeType wie CRYPTO_OPERATIONMODE_START, UPDATE, FINISH oder SINGLECALL) gesteuert wird [SWS_Csm_00802]. Der CSM übergibt den Job an CryIf_ProcessJob [SWS_CryIf_91003], welcher den Aufruf an das zuständige Crypto-Treiberobjekt weiterleitet.

Das Modul SecOC sichert den PDU-Transfer zwischen PduR und Kommunikationsbus ab. Beim Empfang einer gesicherten PDU über SecOC_TpRxIndication [SWS_SecOC_00125] ruft SecOC zunächst Frischewerte über SecOC_GetRxFreshnessAuthData ab [SWS_SecOC_91006] und konstruiert die zu authentifizierenden Daten gemäß Spezifikation SecOcProtocol S. 19. Zur MAC-Verifikation bedient sich SecOC des CSM [SWS_SecOC_00012]. Nach erfolgreicher Prüfung wird die authentische PDU an die oberen Schichten übergeben. Schlägt die Verifikation fehl, wird das Ergebnis im Status SecOC_VerificationStatusType erfasst [SWS_SecOC_00160], [SWS_SecOC_91014]; Interpretation: dieses Scheitern wird als Security Event an den IdsM gemeldet AUTOSAR_CP_SWS_IntrusionDetectionSystemManager S. 21. Frage Q-8cfd1660757f3f1f (offen)

Im Key Manager (KeyM) werden Schlüssel- und Zertifikatsaktualisierungen vorbereitet und vollzogen. Bei Zertifikatsverifikationen (z. B. via KeyM_VerifyCertificates [SWS_KeyM_00059] oder KeyM_VerifyCertificateChain [SWS_KeyM_00061]) nutzt KeyM die kryptografischen Primitiven des CSM zur Signaturprüfung sowie externe Zeitbasen des StbM zur Gültigkeitsprüfung SWS_KeyManager S. 119. Schlüsselaktualisierungen (KeyM_Update [SWS_KeyM_00052]) binden anwenderspezifische Handler (KeyM_KH_Update [SWS_KeyM_00069], [SWS_KeyM_00055]) ein, wobei resultierende Schlüsselbytes über Csm_KeyElementSet [SWS_Csm_00957] und Csm_JobKeySetValid [SWS_Csm_91027] im Crypto-Treiber aktiviert werden. Schlüsselableitungen und Kopiervorgänge leitet CryIf über CryIf_KeyDerive [SWS_CryIf_91009] bzw. CryIf_KeyElementCopy [SWS_CryIf_91015] an Treiberfunktionen wie Crypto_KeyElementCopyPartial [SWS_Crypto_91015] weiter.

Der IdsM sammelt Sicherheitsereignisse (Security Events, SEv) von BSW-Sensoren (darunter SecOC) sowie Applikations-SW-Cs über Schnittstellen wie IdsM_SetSecurityEvent [SWS_IdsM_91002] oder IdsM_SetSecurityEventWithCount [SWS_IdsM_91018]. Die Events werden gepuffert, über Filterketten (z. B. Block State Filter [SWS_IdsM_01020] oder Aggregationsfilter AUTOSAR_CP_SWS_IntrusionDetectionSystemManager S. 40) qualifiziert und schließlich über PduR weitergeleitet [SWS_IdsM_91009], [SWS_IdsM_91010].

Verifikation einer gesicherten PDU in SecOC mit Krypto-Stack und IdsM-ReportingPduRSecOCCSMCryIfCryptoIdsMSecOC_TpRxIndication(id, result)PDU parsen & Freshness Value abrufenCsm_MacVerify(jobId, mode, ...)CryIf_ProcessJob(channelId, job)Crypto_ProcessJob(objectId, job)CryIf_CallbackNotification(job, result)Csm_CallbackNotification(job, result)Callback mit VerifikationsergebnisaltVerifikation erfolgreichPduR Weiterleitung (Authentic PDU)Verifikation fehlgeschlagenIdsM_SetSecurityEvent(SEV_VERIFICATION_FAILURE)Pufferung im Event Buffer & Filterung

Sequenzdiagramm: Verifikation einer gesicherten PDU in SecOC unter Nutzung des Krypto-Stacks und Meldung von Sicherheitsereignissen an den IdsM. Quellen: [SWS_SecOC_00125], [SWS_SecOC_00012], [SWS_CryIf_91003], [SWS_CryIf_91013], [SWS_IdsM_91002].

Synchronisation, Reentranz und Task-Kontexte

Die Ausführung kryptografischer Berechnungen und Sicherheitsoperationen erfordert eine strikte Trennung von synchronen Aufrufpfaden und asynchronen Task-Kontexten. Im CSM und CryIf hängt das Ausführungsverhalten von der Konfiguration der Krypto-Primitive ab: Operationen können synchron blockierend oder asynchron ablaufen [SWS_Csm_00982], [SWS_CryIf_91003]. Bei asynchronen Jobs meldet der Crypto-Treiber die Fertigstellung über CryIf_CallbackNotification [SWS_CryIf_91013], woraufhin CSM die registrierte Rückruffunktion des Aufrufers bedient [SWS_SecOC_00012]. Für unterbrechbare oder länger laufende Berechnungen stellt der CSM die Abbruchfunktion Csm_CancelJob bereit [SWS_Csm_00968], welche über CryIf_CancelJob [SWS_CryIf_91014] an den Treiber delegiert wird.

Die Übertragung im Modul SecOC wird zeitgesteuert entkoppelt: In periodischen Zyklen prüft SecOC_MainFunctionTx, ob neue authentische PDUs zur Signierung anstehen, berechnet die Authentikatoren und initiiert den PduR-Versand [SWS_SecOC_00176]. Im IdsM erfolgt die Aufnahme gemeldeter Ereignisse hochperformant im Sensorkontext (Task oder ISR) über IdsM_SetSecurityEvent [SWS_IdsM_91002], wobei die Events zunächst synchron in konfigurierbaren Event-Puffern abgelegt werden [SWS_IdsM_00701], [SWS_IdsM_00702]. Die zeitintensive Filterung, Kontextdatenverarbeitung und Zeitstempelanreicherung über StbM oder RTE wird vollständig asynchron im Kontext der periodischen IdsM_MainFunction abgearbeitet SWS_IntrusionDetectionSystemManager S. 87, AUTOSAR_CP_SWS_IntrusionDetectionSystemManager S. 86.

Der Key Manager unterscheidet zwischen zeitkritischen und rechenintensiven Aufgaben: Während standardmäßige Zustandsabfragen und Callback-Orchestrierungen in KeyM_MainFunction laufen [SWS_KeyM_00074], ist für rechenintensive synchrone Handler-Abläufe (wie KeyM_KH_Update) die Ausführung in einer preemptiven Hintergrundfunktion KeyM_MainBackgroundFunction vorgesehen [SWS_KeyM_00075]. In Multicore-Architekturen unterstützt der CSM zudem partitionsspezifische Hauptfunktionen und Initialisierungen [SWS_Csm_00646], SWS_CryptoInterface S. 1; Interpretation: diese Partitionierung korrespondiert mit der Zuweisung dedizierter Hardware-Treiberobjekte je Prozessorkern. Frage (offen)

Typische Lebenszyklen und Betriebsmodi

Die Initialisierung des Clusters folgt einer strikten Abhängigkeitshierarchie von unten nach oben. Zunächst werden die hardwarenahen Treiber über Crypto_Init konfiguriert [SWS_Crypto_91016], gefolgt von der Schnittstelle CryIf [SWS_CryIf_91118] und dem CSM über Csm_Init [SWS_Csm_00646]. Erst danach dürfen die abhängigen Module SecOC, KeyM und IdsM initialisiert werden. SecOC wechselt durch die Initialisierung vom Zustand SECOC_UNINIT in SECOC_INIT [SWS_SecOC_00162]. Im KeyM erhalten alle konfigurierten Zertifikate initial den Status KEYM_CERTIFICATE_NOT_AVAILABLE [SWS_KeyM_00021], [SWS_KeyM_91003], bevor sie aus dem NvM gelesen oder via KeyM_SetCertificate bzw. Diagnose geladen und verifiziert werden SWS_KeyManager S. 119.

Zur Laufzeit beeinflussen Fahrzeugzustandswechsel den Betriebsmodus des IdsM: Der Basic Software Manager (BswM) teilt dem IdsM Zustandsänderungen über IdsM_BswM_StateChanged mit [SWS_IdsM_91005]. Diese Zustände steuern den Block State Filter [SWS_IdsM_01020], [SWS_IdsM_91017], wodurch in bestimmten Betriebsphasen (z. B. Programmiermodus oder Schlafphasen) die Weiterleitung von Sicherheitsereignissen unterdrückt wird. Zudem können Reporting-Modi von Events via DCM diagnostisch modifiziert werden (IdsM_Dcm_SetReportingMode_Start [SWS_IdsM_91008], [SWS_IdsM_91013]) und im NvM persistent abgelegt werden [SWS_IdsM_01700], [SWS_IdsM_01701].

Beim Herunterfahren des Steuergeräts (Shutdown) werden die Module geordnet deinitialisiert. SecOC_DeInit stoppt die sichere Kommunikation, leert alle internen Puffer sowie Variablen und überführt SecOC zurück in den Zustand SECOC_UNINIT [SWS_SecOC_00161]. Beim Aufruf von KeyM_Deinit [SWS_KeyM_00047] wird aus Sicherheitsgründen sämtliches im RAM befindliche kryptografische Schlüsselmaterial aktiv zerstört und auf Initialwerte überschrieben, um unbefugtes Auslesen im Ruhezustand zu verhindern.

Fehlerbehandlung, DET-Tracing und Degradation

Das Modulcluster implementiert durchgängige Mechanismen zur Erkennung von Entwicklungsfehlern (Development Error Tracer, DET) und Laufzeitproblemen. Alle Module überprüfen ihre Initialisierung und melden bei uninitialisiertem Aufruf DET-Fehler, beispielsweise CRYIF_E_UNINIT in CryIf-Schnittstellen wie CryIf_RandomSeed [SWS_CryIf_91007], CryIf_CancelJob [SWS_CryIf_91014], CryIf_KeyDerive [SWS_CryIf_91009] oder CryIf_CallbackNotification [SWS_CryIf_91013]. Ebenso führen fehlerhafte Zeigerparameter zu DET-Meldungen, etwa CRYPTO_E_PARAM_POINTER in Crypto_GetVersionInfo [SWS_Crypto_91001], während Initialisierungsfehler im CSM mit CSM_E_INIT_FAILED gemeldet werden [SWS_Csm_00646].

Bei Überlastung oder Ausfall von Krypto-Hardwareobjekten signalisiert der Treiber den Status CRYPTO_E_BUSY [SWS_CryIf_91003], [SWS_Csm_00957]. In solchen Degradationsszenarien erlaubt SecOC über SecOC_SendDefaultAuthenticationInformation das konfigurierbare Senden unauthentifizierter Ersatz-PDUs an die unteren Schichten, um die Fahrzeugverfügbarkeit aufrechtzuerhalten [SWS_SecOC_91013]. Im IdsM führt eine Erschöpfung der konfigurierten Ereignispuffer zum Auslösen des internen Sicherheitsereignisses SEV_IDSM_NO_EVENT_BUFFER_AVAILABLE [SWS_IdsM_00703]. Scheitert die NvM-Persistierung von modifizierten IdsM-Parametern, führt der IdsM einen automatischen Rollback auf den vorherigen Zustand durch [SWS_IdsM_01702]. Tritt beim Setzen von Schlüsseln in Csm_KeyElementSet ein Fehler auf, gilt der Status des Schlüsselelements als undefiniert und muss über Csm_KeyGetStatus [SWS_Csm_91047] und CryIf_KeyGetStatus [SWS_CryIf_91012] validiert werden.

Dieser Leitfaden basiert auf den AUTOSAR-Spezifikationen der Classic Platform für Release R20-11 und fasst die Architektur des Clusters Security & Intrusion Detection zusammen.

Themenkarte

Detailansicht

Wähle in der Gliederung einen Eintrag aus.

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);
IdsM_Init function

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);

Service KeyM_CryptoKeyFinalizeCallbackNotification.

void KeyM_CryptoKeyFinalizeCallbackNotification (KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

Notifies the application that a crypto key update operation has been finished. This function is used by the key manager.

void KeyM_CryptoKeyUpdateCallbackNotification (KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

Notifies the application that a crypto key verify operation has been finished. This function is used by the key manager.

void KeyM_CryptoKeyVerifyCallbackNotification (KeyM_ResultType Result, uint32 KeyId, uint16 ResultDataLength, const uint8* ResultDataPtr);
KeyM_Deinit function

This function resets the key management module to the uninitialized state.

void KeyM_Deinit (void);
KeyM_Finalize function

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);
KeyM_Init function

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);
KeyM_KH_Start function

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);
KeyM_Prepare function

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.

void KeyM_ServiceCertificateCallbackNotification (KeyM_CertificateIdType CertId, KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

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);
KeyM_Start function

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.

Max type

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);
SecOC_DeInit function

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_GetRxFreshness.

Std_ReturnType SecOC_GetRxFreshness (uint16 SecOCFreshnessValueID, const uint8* SecOCTruncatedFreshnessValue, uint32 SecOCTruncatedFreshnessValueLength, uint16 SecOCAuthVerifyAttempts, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);

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);

Service SecOC_GetTxFreshnessTruncData.

Std_ReturnType SecOC_GetTxFreshnessTruncData (uint16 SecOCFreshnessValueID, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength, uint8* SecOCTruncatedFreshnessValue, uint32* SecOCTruncatedFreshnessValueLength);

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);
SecOC_Init function

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).

BSW ID 111 Keine C-API · 0 Records #include "Fw.h"

Intrusion Detection System Manager (IdsM)

Collects and reports onboard security events to detect threats.

BSW ID 108 21 APIs (16 Funktionen, 5 Typen) #include "IdsM.h"

Key Manager (KeyM)

Manages lifecycle, storage, and distribution of cryptographic keys and certificates.

BSW ID 109 42 APIs (27 Funktionen, 15 Typen) #include "KeyM.h"

MACsec Key Agreement (Mka)

AUTOSAR Classic Communication Services-Modul MACsec Key Agreement (Mka, Spezifikation: AUTOSAR_CP_SWS_MACsecKeyAgreement.pdf, AUTOSAR_SWS_MACsecKeyAgreement.pdf).

BSW ID 151 Keine C-API · 0 Records #include "Mka.h"

Secure Onboard Communication (SecOC)

Provides cryptographic authentication and freshness protection for critical communication PDUs.

BSW ID 150 33 APIs (27 Funktionen, 6 Typen) #include "SecOC.h"