DEENESPTFRRUARHIKOZHNL
AUTOSAR_AP_EXP_SWArchitecture FIG-c865d3efdeea3cc5 930 × 610 px 1 Release(s)

Figure 9.61: ExtensionService and CryptoContext Interfaces (2 of 2)

SHA-256 Inhalts-Fingerabdruck: c865d3efdeea3cc5868f4e714587232d2df2215c2044603eb8fffeb909c25840
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08

1. Diagrammtyp & Architektur-Kontext

  • Klassifikation: Hybrides Spezifikationsdiagramm, bestehend aus einer tabellarischen Schnittstellenspezifikation (oben) und einem UML-Klassendiagramm / Schnittstellen-Realisierungsdiagramm (unten).
  • Architektur-Kontext: AUTOSAR Adaptive Platform (ARA), Functional Cluster Cryptography (ara::crypto).
  • Funktionale Einordnung: Spezifikation spezialisierter kryptographischer Kontext-Schnittstellen (CryptoContext) sowie der Hilfsschnittstelle ExtensionService. Die funktionale Implementierung ist als separater Hintergrunddienst (daemon-based) ausgelegt, der kryptographische Primitive und geschützte Schlüsseloperationen kapselt und via IPC typsichere C++ Native APIs für Applikationen im User Space bereitstellt.

2. Komponenten, Entitäten & Schnittstellen

Komponenten
  • Adaptive Application (UML Component): Konsument der kryptographischen Schnittstellen; besitzt gerichtete «use»-Abhängigkeiten zu den Kontexten und dem Erweiterungsdienst.
  • «aapFunctionalCluster» Cryptography (daemon-based) (UML Component): Realisierende Server-Komponente / Daemon, implementiert alle dargestellten Schnittstellen über Interface Realization (gestrichelte Linien mit geschlossener, nicht gefüllter Pfeilspitze).
Schnittstellen (Stereotypen: «aapAPI, aapNativeInterface»)
  • RandomGeneratorCtx (im Tabellenteil oben detailliert, spezialisiert CryptoContext):
    • Dient der Erzeugung kryptographisch sicherer Zufallszahlen (CSPRNG).
    • Methoden: AddEntropy(), Generate(), GetExtensionService(), Seed(), SetKey().
  • KeyDerivationFunctionCtx (spezialisiert CryptoContext):
    • Kontext für Schlüsselableitungsfunktionen (KDF, z. B. HKDF, PBKDF2).
    • Methoden: Init(), SetSourceKeyMaterial(), AddSalt(), AddSecretSalt(), ConfigIterations(), DeriveKey(), DeriveSeed(), Reset(), GetExtensionService().
    • Ziel-Metadatenabfragen: GetKeyIdSize(), GetTargetAlgId(), GetTargetAllowedUsage(), GetTargetKeyBitLength().
  • KeyAgreementPrivateCtx (spezialisiert CryptoContext):
    • Asymmetrische Schlüsselvereinbarung (z. B. Diffie-Hellman, ECDH) unter Nutzung eines privaten Schlüssels.
    • Methoden: SetKey(), AgreeKey(), AgreeSeed(), Reset(), GetExtensionService().
  • MsgRecoveryPublicCtx (spezialisiert CryptoContext):
    • Signaturprüfung mit Nachrichtenwiederherstellung (Message Recovery, z. B. RSA-ISO9796) über einen öffentlichen Schlüssel.
    • Methoden: SetKey(), DecodeAndVerify(), GetMaxInputSize(), GetMaxOutputSize(), Reset(), GetExtensionService().
  • SigEncodePrivateCtx (spezialisiert CryptoContext):
    • Signierung und Nachrichten-Codierung mit privatem Schlüssel.
    • Methoden: SetKey(), SignAndEncode(), GetMaxInputSize(), GetMaxOutputSize(), Reset(), GetExtensionService().
  • ExtensionService:
    • Schnittstelle zur Entkopplung und standardisierten Abfrage von Schlüsselzustand und Metadaten des an einen Kontext gebundenen Schlüssels.
    • Methoden: IsKeyAvailable(), IsKeyBitLengthSupported(), GetActualKeyBitLength(), GetMinKeyBitLength(), GetMaxKeyBitLength(), GetAllowedUsage(), GetActualKeyCOUID().
Beziehungen & Vererbung
  • Spezialisierung / Vererbung: Alle Kontext-Schnittstellen (RandomGeneratorCtx, KeyDerivationFunctionCtx, KeyAgreementPrivateCtx, MsgRecoveryPublicCtx, SigEncodePrivateCtx) erweitern das Basis-Interface CryptoContext.
  • Navigation zu ExtensionService: Jeder CryptoContext bietet GetExtensionService() und hält damit eine direkte 1:1-Beziehung zu einer zugehörigen Instanz von ExtensionService.

3. Dynamisches Verhalten & Sequenzablauf

  1. Kontext-Allokation: Die Adaptive Application erzeugt/bezieht den spezifischen Kontext (z. B. KeyDerivationFunctionCtx oder KeyAgreementPrivateCtx) über die Factory-Methoden des CryptoProviders (Daemon-Proxy).
  2. Schlüssel-Bindung & Konfiguration:
    • Aufruf von SetKey() bzw. SetSourceKeyMaterial() am Kontext.
    • Initialisierung spezifischer Parameter (z. B. AddSalt(), ConfigIterations(), Seed()).
  3. Validierung über ExtensionService:
    • Die Applikation ruft GetExtensionService() ab.
    • Vor der Algorithmenausführung erfolgt die Validierung: IsKeyAvailable() == true, Abgleich von GetAllowedUsage() mit der beabsichtigten Operation und Prüfung von GetActualKeyBitLength().
  4. Operation & Pufferdimensionierung:
    • Bei codierenden/dekodierenden Kontexten: Vorabfrage der maximalen Puffergrößen via GetMaxInputSize() / GetMaxOutputSize().
    • Ausführung der kryptographischen Transformation (DeriveKey(), AgreeKey(), SignAndEncode(), DecodeAndVerify(), Generate()).
  5. Kontext-Bereinigung:
    • Synchroner Aufruf von Reset(), um flüchtige kryptographische Zwischenzustände (State Zeroization) im Kontext sicher zu löschen, bevor dieser freigegeben oder neu gebunden wird.

4. Normative Relevanz & Entwickler-Hinweise

  • Key-Isolation via COUID: Über ExtensionService::GetActualKeyCOUID() wird die Crypto Object Unique ID des gebundenen Schlüssels ermittelt. Applikationen arbeiten rein auf Handles/COUIDs; sensitives Schlüsselmaterial verbleibt isoliert im Daemon/HSM-Speicher.
  • Usage-Policy Enforcement: Der ExtensionService dient als Policy-Gatekeeper (GetAllowedUsage()). Versucht eine Applikation einen Kontext für eine Operation zu nutzen, für die der Schlüssel im Manifest/Key-Storage nicht autorisiert ist (z. B. Signieren mit einem KDF-Schlüssel), schlägt die Operation mit einem ara::core::ErrorCode fehl.
  • Kontext-Zustandsbehaftung: Kontexte sind nicht thread-sicher und streng zustandsbehaftet. Vor einer Wiederverwendung mit neuem Schlüsselmaterial oder Salt ist zwingend Reset() aufzurufen, um State-Leakage und ungültige Zwischenzustände zu verhindern.
  • IPC- und Allokations-Overhead: Da der Functional Cluster daemon-basiert ist, lösen Operationen IPC-Transaktionen aus. Puffer sollten vorab mittels GetMaxOutputSize() statisch bzw. deterministisch vorallokiert werden, um Laufzeitreallokationen im sicherheitskritischen Pfad zu eliminieren.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R24-11 → R25-11 redaktionell Vorgänger: FIG-a317083a11dadbab
  • Tabellarische Spezifikation (RandomGeneratorCtx): Schwerer vertikaler Bildbeschnitt am oberen Rand. Der gesamte Tabellenkopf sowie die Operationen AddEntropy, Generate und GetExtensionService samt der Zellenbeschriftung Operations: sind abgeschnitten; sichtbar sind nur noch die letzten beiden Operationen (Seed und SetKey) mit leerer linker Kopfspalte.
  • UML-Klassendiagramm: Vollständig unverändert.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

Seed Set the internal state of the RNG using the provided seed. | SetKey Set the internal state of the RNG using the provided seed. | «aapFunctionalCluster» | Cryptography daemon-based | CryptoContext | «aapAPI,aapNativeInterf... | KeyAgreementPrivateCtx | + AgreeKey() + AgreeSeed() + GetExtensionService() + Reset() + SetKey() | CryptoContext | «aapAPI,aapNativeInterface» | KeyDerivationFunctionCtx | + AddSalt() + AddSecretSalt() + ConfigIterations() + DeriveKey() + DeriveSeed() + GetExtensionService() + GetKeyIdSize() + GetTargetAlgId() + GetTargetAllowedUsage() + GetTargetKeyBitLength() + Init() + Reset() + SetSourceKeyMaterial() | CryptoContext | «aapAPI,aapNativeInt... | MsgRecoveryPublicCtx | + DecodeAndVerify() + GetExtensionService() + GetMaxInputSize() + GetMaxOutputSize() + Reset() + SetKey() | CryptoContext | «aapAPI,aapNativeInt... | SigEncodePrivateCtx | + GetExtensionService() + GetMaxInputSize() + GetMaxOutputSize() + Reset() + SetKey() + SignAndEncode() | «aapAPI,aapNativeInterf... | ExtensionService | + GetActualKeyBitLength() + GetActualKeyCOUID() + GetAllowedUsage() + GetMaxKeyBitLength() + GetMinKeyBitLength() + IsKeyAvailable() + IsKeyBitLengthSupported() | Adaptive Application | «use» «use» «use» «use» «use»

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R25-11 AUTOSAR_AP_EXP_SWArchitecture S. 108 9.61 Figure 9.61: ExtensionService and CryptoContext Interfaces (2 of 2)