DEENESPTFRRUARHIKOZHNL

module ara::crypto — Cryptography

Spezifikation: AUTOSAR_AP_SWS_Cryptography.pdf (R25-11) · 387 API-Records

ModulegidsAI-GEGENEREERD

Biedt geïsoleerde cryptografische operaties, sleutelbeheer en X.509-certificaatdiensten voor applicaties.
DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: b84ff51de547 Herkomst Open vragen (1)
Causaal anker: R25-11 Geldig vanaf R25-11 Nieuw gesynthetiseerd voor deze specificatiestand.
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Biedt geïsoleerde cryptografische operaties, sleutelbeheer en X.509-certificaatdiensten voor applicaties.

Het functionele cluster Cryptography biedt gestandaardiseerde beveiligingsdiensten voor symmetrische en asymmetrische encryptie, verificatie van handtekeningen en veilig sleutel- en certificaatbeheer (PlatformDesign p. 71). De toegang tot cryptografische operaties en persistente sleutelposities vindt strikt geïsoleerd plaats via platformspecifieke providers en declaratief in het manifest verankerde instantiespecificaties (SWS Cryptography p. 39). De handhaving van gebruiksbeperkingen voorkomt daarbij compromittering van het gevoelige sleutelmateriaal ([SWS_CRYPT_50092]).

Het functionele cluster Cryptography (ara::crypto) biedt een omvattende beveiligingsarchitectuur voor het AUTOSAR Adaptive Platform (PlatformDesign p. 71). Ter beveiliging tegen gecompromitteerde gebruikerstoepassingen zijn sleutelopslag en cryptografische uitvoering doorgaans ingekapseld in een geïsoleerde platformdaemon of Hardware Security Module (HSM) (AUTOSAR AP EXP SWArchitecture p. 97, SWS Cryptography p. 87). De totale functionaliteit is onderverdeeld in gespecialiseerde CryptoProvider voor computationele primitieven, het Key-Storage-gedeelte voor persistente sleutelposities (KeySlots) en een machinewijde X509Provider voor het PKI-certificaatbeheer (SWS Cryptography p. 39).

diag_crypto_arch App Adaptive Application Daemon Cryptography Daemon (ara::crypto) App->Daemon IPC / C++ API CryptoProvider CryptoProvider (HSM / Driver / Software) Daemon->CryptoProvider Primitive Execution KeyStorage Key Storage Provider (KeySlots) Daemon->KeyStorage Key Lifecycle X509Prov X.509 Provider (Certificates / CRL) Daemon->X509Prov PKI Services KeyStorage->CryptoProvider Key Deployment

Contextdiagram: architectuur- en componentrelaties van het Functional Cluster Cryptography tussen applicatie, daemon en providers. Bronnen: SWS Cryptography p. 39, PlatformDesign p. 71, AUTOSAR AP EXP SWArchitecture p. 97.

Applicaties maken cryptografische contexten zoals symmetrische cijfers ([SWS_CRYPT_20742]), geauthenticeerde cijfers ([SWS_CRYPT_20745]), hashfuncties ([SWS_CRYPT_20747]) of signer- en verifier-instanties ([SWS_CRYPT_20756], [SWS_CRYPT_20757]) aan via hun provider (AUTOSAR AP EXP SWArchitecture p. 99). De verwerking volgt een deterministische levenscyclus: na sleutelbinding (SetKey) wordt de transformatie via Start() gestart, via Update() gestreamd en met Finish() afgesloten (AUTOSAR AP TR SystemTests p. 206, EXP SWArchitecture p. 104). Onveranderlijke AllowedUsageFlags voorkomen doeltreffend ongeautoriseerd sleutelgebruik ([SWS_CRYPT_50092], AUTOSAR AP TR SystemTests p. 177).

diag_context_state Uninit Uninitialized Ready Ready (Key Deployed) Uninit->Ready SetKey() Ready->Uninit Reset() Streaming Processing (Started / Update) Ready->Streaming Start() Streaming->Uninit Cancel() / Reset() Streaming->Streaming Update() / UpdateConfidentialData() Finished Finished / Digest Available Streaming->Finished Finish() / FinishEncrypt() Finished->Uninit Reset() Finished->Ready Start() (Re-use)

Toestandsdiagram: levenscyclus van cryptografische transformatiecontexten van toewijzing tot reset. Bronnen: [SWS_CRYPT_20742], [SWS_CRYPT_23911], [SWS_CRYPT_23625], [SWS_CRYPT_50046], [SWS_CRYPT_50212].

Certificaten en CSR's worden beheerd via de X509Provider ([SWS_CRYPT_40099], [SWS_CRYPT_40640]), terwijl validatiecontexten certificaatketens controleren rekening houdend met CRL-intrekkingslijsten ([SWS_CRYPT_50183]) en OCSP-antwoorden ([SWS_CRYPT_50124]) (AUTOSAR AP TR SystemTests p. 194). De toewijzing van KeySlots en certificaten aan applicaties gebeurt modelgebaseerd in het manifest via InstanceSpecifier (AUTOSAR AP TPS ManifestSpecification p. 245, AUTOSAR AP TPS ManifestSpecification p. 649). Alle interfaces werken met uitzonderingsloze ara::core::Result-retourwaarden en signaleren fouten via de CryptoErrorDomain ([SWS_CRYPT_19902], SWS Cryptography p. 208).

Architectuur, beveiligingsdomeinen en daemonisolatie

Het functionele cluster Cryptography (ara::crypto) vormt de centrale beveiligingsbasis van het AUTOSAR Adaptive Platform en biedt cryptografische basismechanismen, sleutelbeheer en certificaatdiensten (PlatformDesign p. 71). Conform het vertrouwensmodel van het platform behoren functionele platformclusters tot het betrouwbare fundament, terwijl Adaptive Applications in de niet-geprivilegieerde gebruikersruimte worden uitgevoerd (SWS Cryptography p. 37). Om sleutelmateriaal en cryptografische operaties ook bij een potentiële compromittering van een applicatie doeltreffend te beveiligen, is de architectuur doorgaans daemon-gebaseerd ontworpen; de daadwerkelijke uitvoering en sleutelopslag blijven in een geïsoleerd platformproces of in een veilige uitvoeringsomgeving (AUTOSAR AP EXP SWArchitecture p. 97, SWS Cryptography p. 87).

De architectuur verdeelt de cryptografische functionaliteit in drie primaire domeinen: de CryptoProvider voor computationele primitieven en sleuteltransformaties, het Key-Storage-gedeelte (ara::crypto::keys) voor het persistent bewaren van objecten en de X509Provider (ara::crypto::x509) voor het certificaatbeheer (SWS Cryptography p. 39, SWS Cryptography p. 87). Op een ECU kunnen meerdere gespecialiseerde instanties van CryptoProvider parallel bestaan, bijvoorbeeld voor het aansluiten van verschillende Hardware Security Modules (HSM, TPM) of softwaregebaseerde drivers (SWS Cryptography p. 39). Tussen verschillende providers bestaat echter bewust geen interoperabiliteit: een cryptografisch object of een sleutel behoort exact tot één provider en kan niet door een andere provider worden verwerkt (SWS Cryptography p. 39). Deze strikte inkapseling is vermoedelijk primair toe te schrijven aan het feit dat hardware-beveiligingsdomeinen hun sleutelgrenzen fysiek afdwingen en key handles niet domeinoverschrijdend geldig zijn. Vraag Q-63efe107cf111983 (open)

diag_crypto_arch App Adaptive Application Daemon Cryptography Daemon (ara::crypto) App->Daemon IPC / C++ API CryptoProvider CryptoProvider (HSM / Driver / Software) Daemon->CryptoProvider Primitive Execution KeyStorage Key Storage Provider (KeySlots) Daemon->KeyStorage Key Lifecycle X509Prov X.509 Provider (Certificates / CRL) Daemon->X509Prov PKI Services KeyStorage->CryptoProvider Key Deployment

Contextdiagram: architectuur- en componentrelaties van het Functional Cluster Cryptography tussen applicatie, daemon en providers. Bronnen: SWS Cryptography p. 39, PlatformDesign p. 71, AUTOSAR AP EXP SWArchitecture p. 97.

Toegangspunten en initialisatie van de cryptografische providers

De toegang tot de module verloopt via globale instapfuncties die dienen als factories voor de centrale abstractie-interfaces (SWArchitecture p. 71). Applicaties creëren of laden een instantie van een CryptoProvider via de functie [SWS_CRYPT_20099] onder vermelding van een gemodelleerde ara::core::InstanceSpecifier. Voor het certificaatbeheer bestaat in het totale systeem exact één globale certificaatprovider die via [SWS_CRYPT_40099] wordt geladen (SWS Cryptography p. 39). Aanvullend zijn er globale hulpdiensten beschikbaar, waaronder het direct genereren van willekeurige gegevens via [SWS_CRYPT_30098] en het opvragen van een hardwareondersteunde beveiligingsteller via [SWS_CRYPT_20098] (SWArchitecture p. 71).

Persistente sleutelbronnen worden niet direct geïnstantieerd, maar geladen via logische sleutelposities (KeySlots). Hiertoe stelt de runtime-omgeving de functies [SWS_CRYPT_50004] voor alleen-lezen-toegang en [SWS_CRYPT_50005] voor beschrijfbare sleutelposities beschikbaar, die de meegegeven instantie-identifier valideren tegen de autorisatieconfiguratie (SWS Cryptography p. 87, AUTOSAR AP TPS ManifestSpecification p. 649). Via een verkregen KeySlot-instantie kan de toegewezen provider-instantie worden opgevraagd door middel van [SWS_CRYPT_30403], waardoor de hechte binding tussen opslaglocatie en uitvoeringsomgeving gewaarborgd blijft (SWS Cryptography p. 39).

Zodra een CryptoProvider-instantie beschikbaar is, fungeert deze als centrale factory voor het instantiëren van specifieke cryptografische werkcontexten (AUTOSAR AP EXP SWArchitecture p. 99). Tot de te creëren contexten behoren onder meer contexten voor random number generators ([SWS_CRYPT_20741]), symmetrische blok- en stroomcijfers ([SWS_CRYPT_20742]), geauthenticeerde encryptie ([SWS_CRYPT_20745]), Message Authentication Codes ([SWS_CRYPT_20746]), cryptografische hashfuncties ([SWS_CRYPT_20747]), asymmetrische encryptie resp. decryptie ([SWS_CRYPT_20750], [SWS_CRYPT_20751]) evenals signatuur- en verificatiecontexten ([SWS_CRYPT_20756], [SWS_CRYPT_20757]) (EXP SWArchitecture p. 99).

Cryptografische transformatiecontexten en gegevensverwerking

De verwerking van cryptografische gegevens in ara::crypto volgt een strikt toestandsgebaseerde levenscyclus, die de ontkoppeling van algoritmeconfiguratie, sleutelbinding en streamingverwerking waarborgt (AUTOSAR AP TR SystemTests p. 211). Na de toewijzing van de context via de provider bevindt deze zich eerst in de niet-geïnitialiseerde toestand. Pas door de overdracht van een compatibele sleutel via de typespecifieke overloads van SetKey() – bijvoorbeeld voor symmetrische sleutels ([SWS_CRYPT_23911]), privésleutels ([SWS_CRYPT_23515]) of direct vanuit een KeySlot ([SWS_CRYPT_50043]) – gaat de context over naar de gereedtoestand (AUTOSAR AP TR SystemTests p. 206).

Voor streamingverwerkingen wordt de transformatie geïnitieerd door Start(), optioneel onder doorgifte van een initialisatievector of context ([SWS_CRYPT_22110], [SWS_CRYPT_23625], [SWS_CRYPT_50020]). Vervolgens kunnen gegevensblokken stapsgewijs via Update() worden ingevoerd ([SWS_CRYPT_21113], [SWS_CRYPT_22113], [SWS_CRYPT_50139]). Bij geauthenticeerde encryptie (AEAD) scheidt de interface strikt tussen geassocieerde gegevens, die via [SWS_CRYPT_20313] worden verwerkt, en vertrouwelijke payload via [SWS_CRYPT_50074] (EXP SWArchitecture p. 104). De voltooiing van een transformatie vindt plaats via Finish() resp. FinishEncrypt() ([SWS_CRYPT_21115], [SWS_CRYPT_23618], [SWS_CRYPT_50075]), waarna authenticatietags of checksums via GetDigest() kunnen worden uitgelezen ([SWS_CRYPT_21116], [SWS_CRYPT_22116]).

Naast de streamingmodus ondersteunen contextklassen zoals symmetrische cijfers en geauthenticeerde cijfers compacte eenmalige aanroepen via [SWS_CRYPT_50047] of [SWS_CRYPT_50078], waardoor korte payloads efficiënt zonder meerstaps protocoloproep kunnen worden ver- of ontsleuteld (SWS Cryptography p. 58). Mocht een lopende operatie moeten worden afgebroken, brengt een aanroep van Cancel() ([SWS_CRYPT_50023], [SWS_CRYPT_50046]) of Reset() ([SWS_CRYPT_50212]) de context deterministisch terug naar de geschoonde begintoestand (EXP SWArchitecture p. 100).

diag_context_state Uninit Uninitialized Ready Ready (Key Deployed) Uninit->Ready SetKey() Ready->Uninit Reset() Streaming Processing (Started / Update) Ready->Streaming Start() Streaming->Uninit Cancel() / Reset() Streaming->Streaming Update() / UpdateConfidentialData() Finished Finished / Digest Available Streaming->Finished Finish() / FinishEncrypt() Finished->Uninit Reset() Finished->Ready Start() (Re-use)

Toestandsdiagram: levenscyclus van cryptografische transformatiecontexten van toewijzing tot reset. Bronnen: [SWS_CRYPT_20742], [SWS_CRYPT_23911], [SWS_CRYPT_23625], [SWS_CRYPT_50046], [SWS_CRYPT_50212].

Sleutelbeheer, inkapseling en handhaving van autorisaties

Cryptografische sleutels worden in het objectmodel getypeerd als CryptoObject resp. RestrictedUseObject (AUTOSAR AP EXP SWArchitecture p. 111, EXP SWArchitecture p. 111). De platformstandaard onderscheidt symmetrische sleutels (SymmetricKey), asymmetrische privésleutels (PrivateKey) en publieke sleutels (PublicKey) (SWS Cryptography p. 291). Sleutelmateriaal kan direct via de CryptoProvider worden gegenereerd ([SWS_CRYPT_20721], [SWS_CRYPT_20722]) of worden afgeleid uit bestaand sleutelmateriaal door een KeyDerivationFunctionCtx ([SWS_CRYPT_20748]) te parametreren met een basissleutel en uit te voeren via [SWS_CRYPT_21515] (EXP SWArchitecture p. 108).

Voor de handhaving van het principe van minimale rechten bevat elk sleutelobject onveranderlijke gebruiksbeperkingen (AllowedUsageFlags), die via [SWS_CRYPT_50092] kunnen worden opgevraagd (AUTOSAR AP TR SystemTests p. 177). De crypto-stack valideert bij elke bindingspoging (SetKey) of de operatie van de doelcontext (bijv. versleutelen, ondertekenen, afleiden of exporteren) geautoriseerd is door de vlaggen van de sleutel, en wijst ontoelaatbaar gebruik strikt af (AUTOSAR AP TR SystemTests p. 177, SWArchitecture p. 95). De standaardinstelling voor een algoritme kan worden bepaald via [SWS_CRYPT_20955].

Voor veilige sleuteluitwisseling implementeert de module meerdere gestandaardiseerde procedures: bij asymmetrische sleutelovereenkomst (Diffie-Hellman / ECDH) wordt via [SWS_CRYPT_20758] een KeyAgreementPrivateCtx aangemaakt waaraan de privésleutel wordt gebonden ([SWS_CRYPT_21313]); de methode [SWS_CRYPT_21312] berekent vervolgens, met inbegrip van de publieke sleutel van de tegenpartij, de gemeenschappelijke symmetrische doelsleutel (AUTOSAR AP TR SystemTests p. 179). Bij het Key Encapsulation Mechanism (KEM) kapselt een KeyEncapsulatorPublicCtx ([SWS_CRYPT_20752]) een symmetrische sleutel in door middel van [SWS_CRYPT_21813], terwijl de tegenpartij de decapsulatie uitvoert via een KeyDecapsulatorPrivateCtx ([SWS_CRYPT_20753]) via [SWS_CRYPT_21412] (AUTOSAR AP TR SystemTests p. 173, AUTOSAR TR AdaptivePlatformSystemTests p. 188). Voor beveiligd sleuteltransport staan Key Wrapping ([SWS_CRYPT_24014], [SWS_CRYPT_24016]) en beveiligde export ([SWS_CRYPT_20728]) ter beschikking (AUTOSAR AP TR SystemTests p. 174, AUTOSAR AP TR SystemTests p. 182).

Asymmetrische sleutelovereenkomst (ECDH) en symmetrische afleidingApp (CRYPTOApp01)CryptoProviderKeyAgreementPrivateCtxSymmetricKeyCreateKeyAgreementPrivateCtx(algId)Result<KeyAgreementPrivateCtx::Sptr>SetKey(privKey)Result<void>AgreeKey(otherSidePublicKey, targetAlgId, allowedUsage)Maak symmetrisch sleutelobject aanResult<SymmetricKey::Sptr>

Sequentiediagram: Asymmetrische sleutelovereenkomst via Diffie-Hellman en afleiding van symmetrische werksleutels. Bronnen: [SWS_CRYPT_20758], [SWS_CRYPT_21313], [SWS_CRYPT_21312], AUTOSAR AP TR SystemTests p. 179.

Asymmetrische handtekeningen worden via gescheiden contexten afgehandeld: Het ondertekenen vindt plaats via een SignerPrivateCtx ([SWS_CRYPT_20756]) en de methode [SWS_CRYPT_23512], terwijl de verificatie via een VerifierPublicCtx ([SWS_CRYPT_20757]) en de methode [SWS_CRYPT_24112] wordt voltrokken (AUTOSAR AP TR SystemTests p. 164, SWArchitecture p. 84). Wordt een KeySlot op de achtergrond door geprivilegieerde beheerdiensten (bijv. OTA-key-rollover) bijgewerkt, dan kunnen consumerende bibliotheken via een update-observer via [SWS_CRYPT_30404] op de hoogte worden gesteld om hun sleutelmateriaal synchroon na te laden (AUTOSAR AP SWS Cryptography p. 36).

Handtekeninggeneratie en -verificatie via SignerPrivateCtx en VerifierPublicCtxApplikationCryptoProviderSignerPrivateCtxVerifierPublicCtxCreateSignerPrivateCtx(algId)Result<SignerPrivateCtx::Sptr>SetKey(privKey)Result<void>Sign(message, signatureBuffer, format)Result<std::size_t> (handtekeninggrootte)Use Case: Verificatie van de handtekeningCreateVerifierPublicCtx(algId)Result<VerifierPublicCtx::Sptr>SetKey(pubKey)Result<void>Verify(message, signature, format)Result<bool> (Geldig / Ongeldig)

Sequentiediagram: Verloop van het genereren en verifiëren van handtekeningen met gebruikmaking van gescheiden private en publieke contexten. Bronnen: [SWS_CRYPT_20756], [SWS_CRYPT_23515], [SWS_CRYPT_23512], [SWS_CRYPT_20757], [SWS_CRYPT_24115], [SWS_CRYPT_24112], AUTOSAR AP TR SystemTests p. 164.

X.509-certificaatbeheer, validatie en groepen

Het subsysteem ara::crypto::x509 stelt gestandaardiseerde functies voor Public Key Infrastructures (PKI) beschikbaar (EXP SWArchitecture p. 116). De centrale X509Provider ([SWS_CRYPT_40099]) ondersteunt zowel vluchtig sessiegeheugen als persistente opslaglocaties (SWS Cryptography p. 39). Certificaten en ketens worden via [SWS_CRYPT_40614] respectievelijk [SWS_CRYPT_40616] uit bytebuffers geparsed. Voor het aanvragen van nieuwe identiteitscertificaten kunnen applicaties via [SWS_CRYPT_40640] cryptografisch ondertekende Certificate Signing Requests (CSR) genereren, waarbij de signer-context en de Distinguished Name (DN) via [SWS_CRYPT_50186] worden overgedragen (AUTOSAR AP TR SystemTests p. 189).

Voor de conformiteits- en geldigheidscontrole instantieert de applicatie via [SWS_CRYPT_50125] een CertificateValidationCtx. Aan deze context worden vertrouwensankers (trust anchors) via [SWS_CRYPT_50117] toegevoegd, validatieopties via [SWS_CRYPT_50120] gedefinieerd en referentietijdstempels via [SWS_CRYPT_50121] vastgelegd. De hiërarchische ketencontrole ten opzichte van de vertrouwensketen vindt plaats via [SWS_CRYPT_50122] respectievelijk [SWS_CRYPT_50123] (AUTOSAR AP TR SystemTests p. 194). Voor het registreren van certificaatintrekkingen kunnen Certificate Revocation Lists (CRL) worden geïmporteerd ([SWS_CRYPT_50183]) of online controles van de certificaatstatus (OCSP conform RFC 6960) via [SWS_CRYPT_40626], [SWS_CRYPT_50185] en [SWS_CRYPT_50124] in de validatiestatus worden opgenomen (AUTOSAR AP TR SystemTests p. 194).

Om certificaatconsumenten bij sleutelwisselingen te ontkoppelen van individuele certificaatinstanties, ondersteunt het manifest het concept van de CryptoCertificateGroup (AUTOSAR AP TPS ManifestSpecification p. 657). Consumerende applicaties laden via [SWS_CRYPT_50126] de volledige groep van logisch gekoppelde certificaten, terwijl geprivilegieerde administratiediensten certificaten via [SWS_CRYPT_50127] en [SWS_CRYPT_50128] dynamisch kunnen vervangen of opschonen (AUTOSAR AP TPS ManifestSpecification p. 657).

X.509-certificaatvalidatie met certificaatketen, CRL en OCSPApplikationX509ProviderValidationCtxCreateCertificateValidationCtx()Result<CertificateValidationCtx::Sptr>AddTrustedCertificate(rootCert)Result<void>ImportCrl(instanceSpecifier, crlBytes, format)Result<CertificateValidationStatus>AddOcspResponse(ocspResponse, issuerCert)Result<CertificateValidationStatus>ValidateCertificate(targetCert)Result<CertificateValidationResult::Sptrc>

Sequentiediagram: X.509-certificaatvalidatie met certificaatketen, CRL-import en online OCSP-statuscontrole. Bronnen: [SWS_CRYPT_40099], [SWS_CRYPT_50125], [SWS_CRYPT_50122], [SWS_CRYPT_50183], [SWS_CRYPT_50124], AUTOSAR AP TR SystemTests p. 194.

Manifest-modellering, port-interfaces en deployment

De integratie van cryptografische resources in een algehele voertuigarchitectuur vindt declaratief plaats via het AUTOSAR-metamodel in het ARXML-manifest (AUTOSAR AP TPS ManifestSpecification p. 244). Softwarecomponenten modelleren hun beveiligingseisen op ontwerpniveau via poorten (RPortPrototype), die door specialisaties van CryptoInterface worden getypeerd: CryptoKeySlotInterface voor sleutelposities, CryptoCertificateInterface voor certificaatresources en CryptoProviderInterface voor de toegang tot uitvoeringsproviders (TPS ManifestSpecification p. 167, AUTOSAR AP TPS ManifestSpecification p. 245). De attributen van de interfaces leggen onveranderlijk vast of lees- of schrijfrechten worden verleend (writeAccess) en welke objecttypen zijn toegestaan (TPS ManifestSpecification p. 168, TPS ManifestSpecification p. 438).

In het deployment-manifest verbindt de doelconfiguratie (Target Configuration) de abstracte poortprototypes met concrete fysieke platformresources (AUTOSAR AP TPS ManifestSpecification p. 649). Het metamodelelement CryptoKeySlotToPortPrototypeMapping mapt de poort van een proces op een in de CryptoModuleInstantiation van de machine gedeclareerde CryptoKeySlot (TPS ManifestSpecification p. 614, TPS ManifestSpecification p. 646). Op analoge wijze wijst CryptoCertificateToPortPrototypeMapping certificaten toe (TPS ManifestSpecification p. 655). Tijdens runtime representeert het pad van de poort in het manifest het ara::core::InstanceSpecifier, dat de applicatiecode aan laadfuncties zoals [SWS_CRYPT_50004] overdraagt (ManifestSpecification p. 154).

Voor platforminteracties tussen functionele clusters – bijvoorbeeld tussen Communication Management (SecOC, IPsec, TLS) en de cryptostack – bestaan geen klassieke poortprototypes (TPS ManifestSpecification p. 861). Hier wordt het InstanceSpecifier in plaats daarvan gevormd door elementen die zijn afgeleid van FunctionalClusterInteractsWithFunctionalClusterMapping, bijvoorbeeld ComKeyToCryptoKeySlotMapping of SecOcJobMapping (TPS ManifestSpecification p. 861, TPS ManifestSpecification p. 864, ManifestSpecification p. 411). Ook de beveiliging van persistentie (Persistency Deployment) en controlesommen van softwareclusters integreren hun sleutels en providers via deze gestandaardiseerde manifest-mappings (TPS ManifestSpecification p. 867, TPS ManifestSpecification p. 896).

Gedrag in het foutgeval

Het foutafhandelingsconcept van de cryptomodule volgt de strikte voorschriften van het Adaptive Platform voor foutbestendige en uitzonderingsloze code (noexcept) (SWS Cryptography p. 145). Alle synchrone bewerkingen retourneren foutsituaties via het generieke resultaattype ara::core::Result<T, ara::core::ErrorCode> (SWS Cryptography p. 208). De foutcodes zijn verankerd in een eigen foutdomein, dat via [SWS_CRYPT_19902] wordt gerepresenteerd; de naam ervan kan via [SWS_CRYPT_19950] en de tekstuele foutbeschrijving via [SWS_CRYPT_19953] worden opgevraagd. Voor applicaties die expliciet gebruikmaken van uitzonderingsafhandeling, stelt de stack het uitzonderingstype CryptoException ([SWS_CRYPT_19906]) en de hulpfunctie [SWS_CRYPT_19954] beschikbaar.

Typische functionele foutcodes omvatten contextschendingen zoals CryptoErrc::kUninitializedContext, wanneer cryptografische bewerkingen vóór de aanroep van SetKey() in gang worden gezet, of CryptoErrc::kInvalidInputSize, wanneer de overgedragen invoerdatabuffers niet aansluiten op het vereiste blokraster (SWS Cryptography p. 208). Bij serialisatie- en conversieprocessen signaleert CryptoErrc::kUnknownIdentifier niet-ondersteunde argumentwaarden en CryptoErrc::kIncompatibleArguments incompatibele parametercombinaties (SWS Cryptography p. 145). Bij toegang tot sleutelresources voorkomt de stack ongeautoriseerde toegang door het retourneren van kAccessViolation (SWS Cryptography p. 87). Bij het parsen van foutieve gebruikersgedefinieerde X.509-certificaatextensies breekt de parser af met CryptoErrc::kRuntimeFault (SWS Cryptography p. 280, SWS Cryptography p. 356).

Om na een opgetreden fout een gedefinieerde toestand in de context te herstellen en geheugenlekken of hangende streamingbuffers in de daemon te voorkomen, moet de aanroeper de context opschonen. Dit gebeurt hetzij gericht door het aanroepen van Cancel() ([SWS_CRYPT_50046], [SWS_CRYPT_50089]), waardoor onvoltooide transformaties worden verworpen, hetzij door Reset() ([SWS_CRYPT_50212]), wat de context volledig terugzet naar de toestand van vóór de sleutelbinding (EXP SWArchitecture p. 100).

Verdere gedetailleerde bewijzen

De specificatie van de module Cryptography steunt op een reeks centrale eisen en architectuurdocumenten, die hierna worden ingedeeld:

Deze modulehandleiding werd gegenereerd door een AI-curatie-assistent op basis van de AUTOSAR Adaptive-specificatie R25-11.

function: 261 type alias: 43 variable: 43 class: 34 enumeration: 5 struct: 1

Themakaart

Detailweergave

Kies een item in de inhoudsopgave.

ara::crypto

Crypto Error Domain class that provides interfaces as defined by ara::core::ErrorDomain such as a name of the Crypto Error Domain or message

erft van ara::core::ErrorDomain

Exception type thrown for CRYPTO errors.

erft van ara::core::Exception

Formatter klasse

Formatter object interface.

128 bit secure counter made up of two uint64_t’s representing the most significant and least significant bits

Serializable object interface.

Return a reference to the global CryptoErrorDomain.

constexpr const ara::core::ErrorDomain & GetCryptoErrorDomain () noexcept;

This factory method shall create or return the existing instance of a specific Crypto Provider.

ara::core::Result< cryp::CryptoProvider::Sptr > LoadCryptoProvider (const ara::core::InstanceSpecifier &iSpecify) noexcept;

Factory that creates a Formatter.

ara::core::Result< Formatter::Sptr > LoadFormatter () noexcept;
LoadKeySlot functie

Load a read-only key slot. This factory method shall load the information associated with the specified KeySlot into a KeySlot object.

ara::core::Result< cryp::KeySlot::Sptr > LoadKeySlot (const ara::core::InstanceSpecifier &iSpecify) noexcept;

Load a writeable key slot. This factory method shall load the information associated with the specified KeySlot into a WriteableKeySlot object.

ara::core::Result< cryp::WriteableKeySlot::Sptr > LoadWriteableKeySlot (const ara::core::InstanceSpecifier &iSpecify) noexcept;

This factory method shall create or return the existing instance of the singleton X.509 Provider.

ara::core::Result< x509::X509Provider::Sptr > LoadX509Provider () noexcept;

Makes Error Code instances from the Crypto Error Domain. The returned ErrorCode instance always references to CryptoErrorDomain.

constexpr ara::core::ErrorCode MakeErrorCode (CryptoErrorDomain::Errc code, ara::core::ErrorDomain::SupportDataType data) noexcept;
CryptoErrc enumeratie

Defines the error codes for the ara::crypto::CryptoErrorDomain

enum class CryptoErrc : ara::core::ErrorDomain::CodeType {...};
CryptoObjectType enumeratie

Enumeration of all types of crypto objects, i.e. types of content that can be stored to a key slot.

enum class CryptoObjectType : std::uint8_t {...};
CryptoTransform enumeratie

Enumeration of cryptographic transformation directions.

enum class CryptoTransform : std::uint8_t {...};
AlgId typealias

Type for holding StringView of algorithm according to standardized format described in the chapter ’Naming Convention’.

using AlgId = ara::core::StringView;
AlgIdString typealias

Type for holding String of algorithm according to standardized format described in the chapter ’Naming Convention’.

using AlgIdString = ara::core::String;

Type for holding bit-flags of allowed usages of a key.

using AllowedUsageFlags = std::uint32_t;
FormatId typealias

A container type for the encoding format identifiers.

using FormatId = std::uint32_t;

Type for holding StringView of algorithm according to standardized format described in the chapter ’Naming Convention’.

Read-Only Memory Region (intended for [in] arguments)

using ReadOnlyMemRegion = ara::core::Span<const std::uint8_t>;

Read-Write Memory Region (intended for [out] or [in/out] arguments)

using ReadWriteMemRegion = ara::core::Span<std::uint8_t>;
Timestamp typealias

The key can be used for data decryption.

constexpr AllowedUsageFlags kAllowDataDecryption {0x0002};

The following constants define 1-bit values representing allowed usages. The key can be used for data encryption

constexpr AllowedUsageFlags kAllowDataEncryption {0x0001};

The derived key can be exported in plaintext.

constexpr AllowedUsageFlags kAllowDerivedPlaintextExport {0x4000};

The key can be used as input to a HashFunctionCtx.

constexpr AllowedUsageFlags kAllowHashCalculation {0x1000};

The key can be used as private or public input to key agreement.

constexpr AllowedUsageFlags kAllowKeyAgreement {0x0020};

The key can be used for key derivation.

constexpr AllowedUsageFlags kAllowKeyDerivation {0x0040};

The key can be used as a key encryption key for key unwrapping or key decapsulation.

constexpr AllowedUsageFlags kAllowKeyUnwrapping {0x0100};

The key can be used as a key encryption key for key wrapping or key encapsulation.

constexpr AllowedUsageFlags kAllowKeyWrapping {0x0080};
kAllowMac variabele

The key can be used for MAC generation and verification.

constexpr AllowedUsageFlags kAllowMac {0x0004};
kAllowPersist variabele

The key can persisted.

constexpr AllowedUsageFlags kAllowPersist {0x0200};

The key can be exported in plaintext.

constexpr AllowedUsageFlags kAllowPlaintextExport {0x2000};
kAllowRngInit variabele

The symmetric key can be used for seeding of a RandomGeneratorCtx.

constexpr AllowedUsageFlags kAllowRngInit {0x0800};

The key can be securely exported (protected export)

constexpr AllowedUsageFlags kAllowSecuredExport {0x0400};

The key can be used for signature generation.

constexpr AllowedUsageFlags kAllowSigGeneration {0x0008};

The key can be used for signature verification.

constexpr AllowedUsageFlags kAllowSigVerification {0x0010};

Export DER-encoded value of an object.

constexpr FormatId kFormatDerEncoded {2};

Export PEM-encoded value of an object.

constexpr FormatId kFormatPemEncoded {3};

Export only raw value of an object, i.e., a plain byte array for symmetric keys and ISO/IEC 7816-8 / IEEE P1363 encoding for combined values.

constexpr FormatId kFormatRawValueOnly {1};

Proprietary format that is only valid in the context of a CryptoProvider.

constexpr FormatId kProprietaryFormat {0};

ara::crypto::cryp

Authenticated Cipher Context interface.

erft van CryptoContext

A common interface for all cryptographic objects recognizable by the Crypto Provider.

erft van ara::crypto::Serializable

basis voor PrivateKey, PublicKey, SymmetricKey

CryptoProviderInterface representing one implementation of a set of cryptographic primitives with a key storage.

Interface for asymmetric decryption.

erft van CryptoContext

Interface for asymmetric encryption.

erft van CryptoContext

Hash function interface.

erft van CryptoContext

Key Agreement Private key Context interface.

erft van CryptoContext

Asymmetric Key Encapsulation Mechanism (KEM) Private key Context interface.

erft van CryptoContext

Key Derivation Function interface.

erft van CryptoContext

Asymmetric Key Encapsulation Mechanism (KEM) Public key Context interface.

erft van CryptoContext

KeySlot klasse

KeySlot interface representing a storage location for a key in a CryptoProvider.

basis voor WriteableKeySlot

Keyed Message Authentication Code Context interface definition.

erft van CryptoContext

PrivateKey klasse

Generalized Asymmetric Private Key interface.

erft van CryptoObject

A contexts for importing secured data such as secret key-material.

erft van CryptoContext

PublicKey klasse

General Asymmetric Public Key interface.

erft van CryptoObject

Interface of Random Number Generator Context.

erft van CryptoContext

Signature Private key Context interface.

erft van CryptoContext

Interface for Symmetric Cipher Operations.

erft van CryptoContext

Symmetric Key interface.

erft van CryptoObject

Context of a symmetric key wrap algorithm.

erft van CryptoContext

Signature Verification Public key Context interface.

erft van CryptoContext

WriteableKeySlot interface representing a writeable storage location for a key in a Crypto Provider.

erft van KeySlot

ara::crypto::x509

X.509 Certificate interface.

erft van ara::crypto::Serializable

Certificate Validation Context.

X.509 Certificate Validation Result.

Certificate Signing Request (CSR) object interface.

erft van ara::crypto::Serializable

Interface of OcspResponse.

X509DN klasse

Interface of X.509 Distinguished Name (DN).

erft van ara::crypto::Serializable

X.509 Provider interface.

Certificate Validation Status.

enum class CertificateValidationStatus : std::uint8_t {...};

On-line Certificate Status Protocol (OCSP) Response Status.

enum class OcspResponseStatus : std::uint8_t {...};

Type for holding bit-flags of certificate validation options.

using CertificateValidationOptions = std::uint32_t;

X.509 v3 Extended Key Usage type definition.

using X509ExtendedKeyUsage = std::uint32_t;
X509KeyUsage typealias

X.509 v3 Key Usage type definition.

using X509KeyUsage = std::uint32_t;
kClientAuth variabele

TLS WWW client authentication.

constexpr X509ExtendedKeyUsage kClientAuth {0x4000};
kCodeSigning variabele

Signing of downloadable executable code.

constexpr X509ExtendedKeyUsage kCodeSigning {0x2000};
kConstrCrlSign variabele

The key can be used for Certificates Revokation Lists (CRL) signing.

constexpr X509KeyUsage kConstrCrlSign {0x0200};

The key can be used for data encipherment.

constexpr X509KeyUsage kConstrDataEncipherment {0x1000};

The enciphermet key can be used for deciphering only.

constexpr X509KeyUsage kConstrDecipherOnly {0x0080};

The key can be used for digital signature production.

constexpr X509KeyUsage kConstrDigitalSignature {0x8000};

The enciphermet key can be used for enciphering only.

constexpr X509KeyUsage kConstrEncipherOnly {0x0100};

The key can be used for a key agreement protocol execution.

constexpr X509KeyUsage kConstrKeyAgreement {0x0800};

The key can be used for certificates signing.

constexpr X509KeyUsage kConstrKeyCertSign {0x0400};

The key can be used for key encipherment.

constexpr X509KeyUsage kConstrKeyEncipherment {0x2000};

The key can be used in cases requiring the "non-repudiation" guarantee.

constexpr X509KeyUsage kConstrNonRepudiation {0x4000};

Email protection.

constexpr X509ExtendedKeyUsage kEmailProtection {0x1000};
kIgnoreCrl variabele

ignore previously imported CRLs

constexpr CertificateValidationOptions kIgnoreCrl {0x0008};
kIgnoreNotAfter variabele

ignore the NotAfter field

constexpr CertificateValidationOptions kIgnoreNotAfter {0x0002};

ignore the NotBefore field

constexpr CertificateValidationOptions kIgnoreNotBefore {0x0001};

ignore all unknown critical extensions

constexpr CertificateValidationOptions kIgnoreUnknownCritical Extensions {0x0004};
kOcspOff variabele

do not require OCSP response during certificate validation. This is the default behavior.

constexpr CertificateValidationOptions kOcspOff {0x0040};

require OCSP response for all certificates of chain

constexpr CertificateValidationOptions kOcspResponseCompleteChain {0x0010};

require OCSP response only for target certificate

constexpr CertificateValidationOptions kOcspResponseTargetOnly {0x0020};
kOCSPSigning variabele

Signing OCSP responses.

constexpr X509ExtendedKeyUsage kOCSPSigning {0x0400};
kServerAuth variabele

TLS WWW server authentication.

constexpr X509ExtendedKeyUsage kServerAuth {0x8000};
kTimeStamping variabele

Binding the hash of an object to a time.

constexpr X509ExtendedKeyUsage kTimeStamping {0x0800};

Namespaces

UML-klassendiagram van de module

Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.

G cluster_1 ara::crypto cluster_2 ara::crypto::cryp cluster_3 ara::crypto::x509 nara__crypto__Serializable855 Serializable nara__crypto__CryptoErrorDomain690 CryptoErrorDomain nara__core__ErrorDomain335 ara::core::ErrorDomain nara__crypto__CryptoErrorDomain690->nara__core__ErrorDomain335 nara__crypto__CryptoException764 CryptoException nara__core__Exception792 ara::core::Exception nara__crypto__CryptoException764->nara__core__Exception792 nara__crypto__Formatter631 Formatter nara__crypto__SecureCounter126 «struct» SecureCounter nara__crypto__cryp__AuthCipherCtx142 AuthCipherCtx nara__crypto__cryp__CryptoContext85 CryptoContext nara__crypto__cryp__AuthCipherCtx142->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__CryptoObject679 CryptoObject nara__crypto__cryp__CryptoObject679->nara__crypto__Serializable855 nara__crypto__cryp__DecryptorPrivateCtx616 DecryptorPrivateCtx nara__crypto__cryp__DecryptorPrivateCtx616->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__EncryptorPublicCtx829 EncryptorPublicCtx nara__crypto__cryp__EncryptorPublicCtx829->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__HashFunctionCtx412 HashFunctionCtx nara__crypto__cryp__HashFunctionCtx412->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyAgreementPrivateCtx203 KeyAgreementPrivateCtx nara__crypto__cryp__KeyAgreementPrivateCtx203->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyDecapsulatorPrivateCtx748 KeyDecapsulatorPrivateCtx nara__crypto__cryp__KeyDecapsulatorPrivateCtx748->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyDerivationFunctionCtx485 KeyDerivationFunctionCtx nara__crypto__cryp__KeyDerivationFunctionCtx485->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyEncapsulatorPublicCtx699 KeyEncapsulatorPublicCtx nara__crypto__cryp__KeyEncapsulatorPublicCtx699->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeySlot637 KeySlot nara__crypto__cryp__MessageAuthnCodeCtx845 MessageAuthnCodeCtx nara__crypto__cryp__MessageAuthnCodeCtx845->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__PrivateKey762 PrivateKey nara__crypto__cryp__PrivateKey762->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__ProtectedKeyImportCtx279 ProtectedKeyImportCtx nara__crypto__cryp__ProtectedKeyImportCtx279->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__PublicKey940 PublicKey nara__crypto__cryp__PublicKey940->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__RandomGeneratorCtx512 RandomGeneratorCtx nara__crypto__cryp__RandomGeneratorCtx512->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SignerPrivateCtx943 SignerPrivateCtx nara__crypto__cryp__SignerPrivateCtx943->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SymmetricCipherCtx167 SymmetricCipherCtx nara__crypto__cryp__SymmetricCipherCtx167->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SymmetricKey111 SymmetricKey nara__crypto__cryp__SymmetricKey111->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__SymmetricKeyWrapperCtx465 SymmetricKeyWrapperCtx nara__crypto__cryp__SymmetricKeyWrapperCtx465->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__VerifierPublicCtx35 VerifierPublicCtx nara__crypto__cryp__VerifierPublicCtx35->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__WriteableKeySlot529 WriteableKeySlot nara__crypto__cryp__WriteableKeySlot529->nara__crypto__cryp__KeySlot637 nara__crypto__cryp__CryptoProvider844 CryptoProvider nara__crypto__x509__Certificate240 Certificate nara__crypto__x509__Certificate240->nara__crypto__Serializable855 nara__crypto__x509__CertSignRequest934 CertSignRequest nara__crypto__x509__CertSignRequest934->nara__crypto__Serializable855 nara__crypto__x509__X509DN930 X509DN nara__crypto__x509__X509DN930->nara__crypto__Serializable855 nara__crypto__x509__CertificateValidationCtx565 CertificateValidationCtx nara__crypto__x509__CertificateValidationResult372 CertificateValidationResult nara__crypto__x509__OcspResponse358 OcspResponse nara__crypto__x509__X509Provider937 X509Provider