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

Guia do clusterGERADO POR IA

Garante a segurança de bordo por meio de serviços criptográficos, autenticação de PDU, gerenciamento de chaves e detecção de eventos.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 2b0b830492f5 Procedência Perguntas em aberto (2)
Âncora causal: R20-11 Válido a partir de R20-11 Sintetizado para esta versão de especificação.
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Garante a segurança de bordo por meio de serviços criptográficos, autenticação de PDU, gerenciamento de chaves e detecção de eventos.

O cluster Security & Intrusion Detection disponibiliza primitivas criptográficas via CSM, CryIf e Crypto Driver, protege I-PDUs com dados de autenticação por meio do SecOC e gerencia chaves bem como certificados com o KeyM AUTOSAR_CP_SWS_CryptoServiceManager p. 21. Incidentes de segurança são reportados como eventos ao IdsM, onde são armazenados em buffer e filtrados de forma assíncrona [SWS_IdsM_00702]. Durante o shutdown, a exclusão ativa de dados de chaves na RAM protege contra comprometimento não autorizado.

O cluster de módulos Security & Intrusion Detection reúne os módulos secoc, idsm, keym, csm, cryif e crypto para a proteção da comunicação veicular e para a detecção de incidentes de segurança na AUTOSAR Classic Platform AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21. Os serviços criptográficos básicos são fornecidos hierarquicamente por meio do Crypto Service Manager (CSM), que encapsula jobs em estruturas Crypto_JobType [SWS_Csm_01013] e os encaminha via Crypto Interface (CryIf_ProcessJob [SWS_CryIf_91003]) para os objetos de driver específicos de hardware ou software do Crypto Driver.

A comunicação de PDUs é protegida pelo SecOC por meio de códigos de autenticação de mensagem (MAC) e valores de frescor ([SWS_SecOC_91006], [SWS_SecOC_00012]), enquanto o Key Manager (KeyM) prepara, atualiza e valida certificados e chaves para o CSM ([SWS_KeyM_00052], [SWS_KeyM_00059]). Eventos relevantes para a segurança – como verificações de PDU com falha – são reportados como Security Events (SEv) ao IdsM [SWS_IdsM_91002], que os armazena em buffer de forma síncrona [SWS_IdsM_00701] e os qualifica de forma assíncrona por meio de cadeias de filtros configuráveis [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

Diagrama de arquitetura: arquitetura em camadas e relações de interface do cluster de Security e Intrusion Detection. Fontes: AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21, AUTOSAR_CP_SWS_CryptoServiceManager p. 21.

A execução separa entradas de API síncronas de tarefas em segundo plano de computação intensiva em IdsM_MainFunction, SecOC_MainFunctionTx [SWS_SecOC_00176] e KeyM_MainBackgroundFunction [SWS_KeyM_00075]. Em caso de erro ou sobrecarga do sistema (CRYPTO_E_BUSY), mecanismos de fallback como padrões de autenticação padrão no SecOC [SWS_SecOC_91013] e rollbacks no NvM no IdsM [SWS_IdsM_01702] asseguram a estabilidade de todo o sistema; durante o desligamento, o KeyM exclui completamente o material de chave ativo na RAM [SWS_KeyM_00047].

Arquitetura do sistema & papel do cluster de módulos

O cluster de módulos Security & Intrusion Detection da AUTOSAR Classic Platform (Release R20-11) fornece serviços padronizados para criptografia, comunicação de bordo segura, gerenciamento de chaves e certificados, bem como detecção de intrusão. Funcionalmente, o cluster divide-se em várias camadas do Basic Software (BSW) da AUTOSAR: no nível de serviço, o Crypto Service Manager (CSM) encapsula serviços criptográficos independentes de hardware AUTOSAR_CP_SWS_CryptoServiceManager p. 21. A comunicação segura de I-PDUs é assumida pelo módulo Secure Onboard Communication (SecOC) na camada de comunicação [SWS_SecOC_00162], enquanto o Key Manager (KeyM), como serviço de segurança, orquestra o ciclo de vida de chaves criptográficas e certificados SWS_KeyManager p. 31. Complementarmente, o Intrusion Detection System Manager (IdsM) atua como agregador e filtro central para eventos relevantes para a segurança em todo o sistema AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21.

Abaixo do CSM, o Crypto Interface (CryIf) abstrai como camada CryIf o acesso específico de hardware ou software a múltiplos objetos de driver criptográficos e uniformiza o mecanismo de despacho de requisições e chaves SWS_CryptoInterface p. 1. No nível de MCAL e drivers, o Crypto Driver (Crypto) executa os cálculos reais em software ou em módulos de segurança de hardware (HSM) [SWS_Crypto_91016]. A interação dessas camadas garante um desacoplamento completo do software de aplicação (SW-C) e dos módulos de comunicação em relação aos aceleradores criptográficos específicos de hardware.

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

Diagrama de arquitetura: arquitetura em camadas e relações de interface do cluster de Security e Intrusion Detection. Fontes: AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21, AUTOSAR_CP_SWS_CryptoServiceManager p. 21.

Interação e caminhos de interação entre os módulos

Os módulos do cluster estão interligados por meio de caminhos de fluxo de dados e controle claramente definidos. O processamento de jobs criptográficos ocorre primariamente por meio do CSM. Módulos de aplicação ou módulos BSW como SecOC e KeyM iniciam requisições por meio de serviços do 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] ou Csm_RandomGenerate [SWS_Csm_01543]. As requisições são encapsuladas na estrutura de tempo de execução padronizada Crypto_JobType [SWS_Csm_01013], que é controlada por meio de modos de operação (Crypto_OperationModeType como CRYPTO_OPERATIONMODE_START, UPDATE, FINISH ou SINGLECALL) [SWS_Csm_00802]. O CSM repassa o job para CryIf_ProcessJob [SWS_CryIf_91003], que encaminha a chamada para o respectivo objeto de driver criptográfico.

O módulo SecOC protege a transferência de PDUs entre o PduR e o barramento de comunicação. Ao receber uma PDU protegida via SecOC_TpRxIndication [SWS_SecOC_00125], o SecOC obtém primeiramente valores de frescor via SecOC_GetRxFreshnessAuthData [SWS_SecOC_91006] e constrói os dados a serem autenticados de acordo com a especificação SecOcProtocol p. 19. Para a verificação de MAC, o SecOC utiliza o CSM [SWS_SecOC_00012]. Após a verificação bem-sucedida, a PDU autêntica é repassada para as camadas superiores. Se a verificação falhar, o resultado é registrado no status SecOC_VerificationStatusType [SWS_SecOC_00160], [SWS_SecOC_91014]; interpretação: essa falha é reportada como Security Event ao IdsM AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 21. Pergunta Q-8cfd1660757f3f1f (aberta)

No Key Manager (KeyM), as atualizações de chaves e certificados são preparadas e executadas. Em verificações de certificados (por exemplo, via KeyM_VerifyCertificates [SWS_KeyM_00059] ou KeyM_VerifyCertificateChain [SWS_KeyM_00061]), o KeyM utiliza as primitivas criptográficas do CSM para a verificação de assinatura, bem como bases de tempo externas do StbM para a verificação de validade SWS_KeyManager p. 119. Atualizações de chaves (KeyM_Update [SWS_KeyM_00052]) integram handlers específicos do usuário (KeyM_KH_Update [SWS_KeyM_00069], [SWS_KeyM_00055]), sendo que os bytes de chave resultantes são ativados no driver criptográfico via Csm_KeyElementSet [SWS_Csm_00957] e Csm_JobKeySetValid [SWS_Csm_91027]. O CryIf encaminha derivações de chaves e operações de cópia via CryIf_KeyDerive [SWS_CryIf_91009] ou CryIf_KeyElementCopy [SWS_CryIf_91015] para funções de driver como Crypto_KeyElementCopyPartial [SWS_Crypto_91015].

O IdsM coleta eventos de segurança (Security Events, SEv) de sensores de BSW (entre eles o SecOC), bem como de SW-Cs de aplicação por meio de interfaces como IdsM_SetSecurityEvent [SWS_IdsM_91002] ou IdsM_SetSecurityEventWithCount [SWS_IdsM_91018]. Os eventos são armazenados em buffer, qualificados por meio de cadeias de filtros (por exemplo, Block State Filter [SWS_IdsM_01020] ou filtros de agregação AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 40) e finalmente encaminhados via PduR [SWS_IdsM_91009], [SWS_IdsM_91010].

Verificação de uma PDU protegida no SecOC com stack de criptografia e reporte ao IdsMPduRSecOCCSMCryIfCryptoIdsMSecOC_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 com resultado de verificaçãoaltVerifikation erfolgreichPduR Weiterleitung (Authentic PDU)Verifikation fehlgeschlagenIdsM_SetSecurityEvent(SEV_VERIFICATION_FAILURE)Bufferização no Event Buffer & filtragem

Diagrama de sequência: verificação de uma PDU protegida no SecOC com uso da pilha criptográfica e notificação de eventos de segurança ao IdsM. Fontes: [SWS_SecOC_00125], [SWS_SecOC_00012], [SWS_CryIf_91003], [SWS_CryIf_91013], [SWS_IdsM_91002].

Sincronização, reentrância e contextos de tarefas

A execução de cálculos criptográficos e operações de segurança exige uma separação rigorosa entre caminhos de chamada síncronos e contextos de tarefas assíncronos. No CSM e no CryIf, o comportamento de execução depende da configuração das primitivas criptográficas: as operações podem ocorrer de forma síncrona bloqueante ou assíncrona [SWS_Csm_00982], [SWS_CryIf_91003]. Em jobs assíncronos, o driver criptográfico notifica a conclusão via CryIf_CallbackNotification [SWS_CryIf_91013], após o que o CSM atende à função de callback registrada do chamador [SWS_SecOC_00012]. Para cálculos interrompíveis ou de maior duração, o CSM disponibiliza a função de cancelamento Csm_CancelJob [SWS_Csm_00968], que é delegada ao driver via CryIf_CancelJob [SWS_CryIf_91014].

A transmissão no módulo SecOC é desacoplada de forma temporizada: em ciclos periódicos, SecOC_MainFunctionTx verifica se novas PDUs autênticas estão pendentes para assinatura, calcula os autenticadores e inicia o envio via PduR [SWS_SecOC_00176]. No IdsM, a recepção de eventos reportados ocorre com alto desempenho no contexto do sensor (task ou ISR) via IdsM_SetSecurityEvent [SWS_IdsM_91002], sendo os eventos inicialmente armazenados de forma síncrona em buffers de eventos configuráveis [SWS_IdsM_00701], [SWS_IdsM_00702]. A filtragem intensiva em tempo, o processamento de dados de contexto e o enriquecimento com carimbo de data/hora via StbM ou RTE são processados de forma totalmente assíncrona no contexto da IdsM_MainFunction periódica SWS_IntrusionDetectionSystemManager p. 87, AUTOSAR_CP_SWS_IntrusionDetectionSystemManager p. 86.

O Key Manager distingue entre tarefas com restrições temporais críticas e tarefas de computação intensiva: enquanto consultas de estado padrão e orquestrações de callbacks são executadas em KeyM_MainFunction [SWS_KeyM_00074], para fluxos de handlers síncronos de computação intensiva (como KeyM_KH_Update) está prevista a execução em uma função de segundo plano preemptiva KeyM_MainBackgroundFunction [SWS_KeyM_00075]. Em arquiteturas multicore, o CSM suporta adicionalmente funções principais e inicializações específicas de partição [SWS_Csm_00646], SWS_CryptoInterface p. 1; interpretação: esse particionamento corresponde à atribuição de objetos de driver de hardware dedicados para cada núcleo de processador. Pergunta (aberta)

Ciclos de vida típicos e modos de operação

A inicialização do cluster segue uma hierarquia estrita de dependências de baixo para cima. Primeiramente, os drivers próximos ao hardware são configurados via Crypto_Init [SWS_Crypto_91016], seguidos pela interface CryIf [SWS_CryIf_91118] e pelo CSM via Csm_Init [SWS_Csm_00646]. Somente depois disso os módulos dependentes SecOC, KeyM e IdsM podem ser inicializados. Com a inicialização, o SecOC transita do estado SECOC_UNINIT para SECOC_INIT [SWS_SecOC_00162]. No KeyM, todos os certificados configurados recebem inicialmente o status KEYM_CERTIFICATE_NOT_AVAILABLE [SWS_KeyM_00021], [SWS_KeyM_91003], antes de serem lidos do NvM ou carregados e verificados via KeyM_SetCertificate ou diagnóstico SWS_KeyManager p. 119.

Durante o tempo de execução, mudanças de estado do veículo influenciam o modo de operação do IdsM: o Basic Software Manager (BswM) comunica alterações de estado ao IdsM via IdsM_BswM_StateChanged [SWS_IdsM_91005]. Esses estados controlam o Block State Filter [SWS_IdsM_01020], [SWS_IdsM_91017], suprimindo o encaminhamento de eventos de segurança em determinadas fases de operação (por exemplo, modo de programação ou fases de repouso). Além disso, os modos de reporte de eventos podem ser modificados por diagnóstico via DCM (IdsM_Dcm_SetReportingMode_Start [SWS_IdsM_91008], [SWS_IdsM_91013]) e armazenados de forma persistente no NvM [SWS_IdsM_01700], [SWS_IdsM_01701].

Durante o desligamento da unidade de controle (shutdown), os módulos são desinicializados de forma ordenada. SecOC_DeInit interrompe a comunicação segura, esvazia todos os buffers internos bem como variáveis e retorna o SecOC para o estado SECOC_UNINIT [SWS_SecOC_00161]. Na chamada de KeyM_Deinit [SWS_KeyM_00047], por motivos de segurança, todo o material de chaves criptográficas presente na RAM é ativamente destruído e sobrescrito com valores iniciais, a fim de impedir a leitura não autorizada no estado de repouso.

Tratamento de erros, rastreamento pelo DET e degradação

O cluster de módulos implementa mecanismos abrangentes para a detecção de erros de desenvolvimento (Development Error Tracer, DET) e problemas em tempo de execução. Todos os módulos verificam sua inicialização e reportam erros de DET em caso de chamada não inicializada, por exemplo, CRYIF_E_UNINIT em interfaces do CryIf como CryIf_RandomSeed [SWS_CryIf_91007], CryIf_CancelJob [SWS_CryIf_91014], CryIf_KeyDerive [SWS_CryIf_91009] ou CryIf_CallbackNotification [SWS_CryIf_91013]. Da mesma forma, parâmetros de ponteiro incorretos levam a notificações de DET, como CRYPTO_E_PARAM_POINTER em Crypto_GetVersionInfo [SWS_Crypto_91001], enquanto erros de inicialização no CSM são reportados com CSM_E_INIT_FAILED [SWS_Csm_00646].

Em caso de sobrecarga ou falha de objetos de hardware criptográfico, o driver sinaliza o status CRYPTO_E_BUSY [SWS_CryIf_91003], [SWS_Csm_00957]. Em tais cenários de degradação, o SecOC permite, via SecOC_SendDefaultAuthenticationInformation, o envio configurável de PDUs substitutas não autenticadas para as camadas inferiores, a fim de manter a disponibilidade do veículo [SWS_SecOC_91013]. No IdsM, o esgotamento dos buffers de eventos configurados leva ao disparo do evento de segurança interno SEV_IDSM_NO_EVENT_BUFFER_AVAILABLE [SWS_IdsM_00703]. Se a persistência no NvM de parâmetros modificados do IdsM falhar, o IdsM realiza um rollback automático para o estado anterior [SWS_IdsM_01702]. Caso ocorra um erro ao definir chaves em Csm_KeyElementSet, o status do elemento de chave é considerado indefinido e deve ser validado via Csm_KeyGetStatus [SWS_Csm_91047] e CryIf_KeyGetStatus [SWS_CryIf_91012].

Este guia baseia-se nas especificações AUTOSAR da Classic Platform para o Release R20-11 e resume a arquitetura do cluster Security & Intrusion Detection.

Mapa de temas

Vista de detalhes

Selecione uma entrada no índice.

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 função

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 função

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

void KeyM_Deinit (void);
KeyM_Finalize função

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 função

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 função

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 função

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 função

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 tipo

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 função

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 função

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"