DEENESPTFRRUARHIKOZHNL
AUTOSAR_AP_EXP_SWArchitecture FIG-672e05f032fe2470 765 × 382 px 2 Release(s)

Figure 9.54: CryptoService and CryptoContext Interfaces

SHA-256 Inhalts-Fingerabdruck: 672e05f032fe247005b1971ee8515d4b72fc0613a1f408373d5c0683e1b93280
✦ 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

  • Diagrammtyp: UML-Klassendiagramm / Schnittstellenspezifikation (AUTOSAR Adaptive Platform).
  • Architektur-Kontext: Spezifikation der C++ Native API-Bindung für den Functional Cluster Cryptography (ara::crypto) gemäß AUTOSAR Adaptive Platform (R21-11, AUTOSAR_EXP_SWArchitecture).
  • Technischer Zweck: Darstellung der Entkopplung zwischen der konsumierenden Adaptive Application und der Plattform-Realisierung im Modus daemon-based (getrennter Prozess/Daemon für Krypto-Primitive, Key-Storage und HSM-Anbindung). Es definiert die Schnittstellenteilung zwischen zustandsbehafteten Rechenkontexten (CryptoContext) und zustandslosen Algorithmen-Metadaten (ExtensionService).

2. Komponenten, Entitäten & Schnittstellen

  • Komponenten / Akteure:
    • Adaptive Application: Anwendungsprozess im User Space, agiert als Service-Konsument.
    • «aapFunctionalCluster» Cryptography (Tag: daemon-based): Plattform-Dienst/Daemon, der die kryptografischen Treiber, Hardware-Security-Module (HSM) oder Software-Ciphers kapselt.
  • Schnittstellen (Stereotypen: «aapAPI, aapNativeInterface»):
    • CryptoContext::EncryptorPrivateCtx: Asymmetrischer/privater Verschlüsselungskontext.
      • Methoden: + GetCryptoService(), + ProcessBlock(), + Reset(), + SetKey().
    • CryptoContext::DecryptorPrivateCtx: Asymmetrischer/privater Entschlüsselungskontext.
      • Methoden: + GetCryptoService(), + ProcessBlock(), + Reset(), + SetKey().
    • CryptoContext::SymmetricBlockCipherCtx: Symmetrischer Blockchiffrier-Kontext (z. B. AES-CBC, AES-GCM).
      • Methoden: + GetCryptoService(), + GetTransformation(), + ProcessBlock(), + ProcessBlocks(), + Reset(), + SetKey().
    • ExtensionService::CryptoService: Dienst zur Bereitstellung algorhythmusspezifischer Parameter und Puffergrenzen.
      • Methoden: + GetBlockSize(), + GetMaxInputSize(), + GetMaxOutputSize().
  • Beziehungen & Vererbung:
    • Interface-Realization (gestrichelte Linie mit geschlossener, nicht ausgefüllter Pfeilspitze): Cryptography realisiert alle vier nativen Schnittstellen.
    • Nutzungsabhängigkeit («use», gestrichelte Pfeile): Adaptive Application bindet und konsumiert alle vier Interfaces direkt.
    • Assoziation / Navigation: Jeder CryptoContext referenziert über GetCryptoService() die zugehörige Instanz von ExtensionService::CryptoService.

3. Dynamisches Verhalten & Sequenzablauf

Obwohl als statisches Strukturdiagramm dargestellt, erzwingt das API-Design folgenden Ablauf:

  1. Kontext-Allokation & Konfiguration:
    • Erzeugung/Bezug einer Kontextinstanz (EncryptorPrivateCtx, DecryptorPrivateCtx oder SymmetricBlockCipherCtx) über eine Factory/Provider-API.
    • Bindung des Schlüssels über SetKey().
  2. Puffer- und Größenabfrage:
    • Aufruf von GetCryptoService() am Kontext liefert CryptoService.
    • Abfrage von Block- und Maximalgrößen (GetBlockSize(), GetMaxInputSize(), GetMaxOutputSize()) zur Vorallokation applikationsseitiger Ein-/Ausgabepuffer.
  3. Kryptografische Transformation:
    • Synchroner Aufruf von ProcessBlock() für Einzelblöcke bzw. ProcessBlocks() für Blockströme.
    • Bei symmetrischen Chiffren: Identifikation des Transformationsmodus (Algorithmus, Chaining-Modus, Padding) via GetTransformation().
  4. Zustandsverwaltung / Reset:
    • Reset() setzt interne Zustände (Initialisierungsvektoren IV, Zwischenpuffer) zurück, behält jedoch die Schlüsselbindung (SetKey()) bei.

4. Normative Relevanz & Entwickler-Hinweise

  • IPC-Overhead bei daemon-based: Da das Cluster als Daemon instanziiert ist, involvieren Aufrufe Prozesswechsel (Context Switches) und Inter-Process Communication (IPC/Shared Memory). Entwickler müssen für Durchsatzoptimierung zwingend ProcessBlocks() (Streaming/Batching) statt sequenzieller ProcessBlock()-Aufrufe verwenden.
  • Puffer-Vorvalidierung: Vor Aufruf von ProcessBlock(s) muss die Applikation die Puffergrößen strikt gegen GetMaxInputSize() und GetMaxOutputSize() validieren. Fehldimensionierungen führen zu Fehlern aus der CryptoErrorDomain (ara::core::Result<T>).
  • Schlüsselisolierung: SetKey() verarbeitet Key-Slot-Handles/Referenzen (ara::crypto::keys). Reines Schlüsselmaterial verbleibt im geschützten Speicherbereich des Daemons oder im Secure Element/HSM und wird nicht in den Prozessraum der Adaptive Application kopiert.
  • Thread-Sicherheit: Instanzen von CryptoContext sind zustandsbehaftet und in der Regel nicht reentrant/thread-safe. Nebenläufige Verschlüsselungsoperationen erfordern separate Kontext-Instanzen je Thread.

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

R22-11 → R23-11 redaktionell Vorgänger: FIG-812733f50d84d305
  • Tabellenlayout / Umbruch: Das am oberen Bildrand als Umbruchfragment sichtbare Tabellenfragment der Schnittstelle StreamCipherCtx wurde entfernt. Das verbleibende UML-Klassendiagramm ist unverändert.
R24-11 → R25-11 normative Änderung Nachfolger: FIG-7c9aff6fa816e25c
  • Tabellarische Schnittstellenspezifikation ergänzt: Oberhalb des Klassendiagramms wurde die vollständige Spezifikationstabelle für das native Interface StreamCipherCtx (Technology: Native interface, Usage: Public API, Beschreibung: „Generalized stream cipher context interface covering all modes of operation.“) mit 14 Operationen (CountBytesInCache, EstimateMaxInputSize, EstimateRequiredCapacity, FinishBytes, GetBlockService, GetTransformation, IsBytewiseMode, IsSeekableMode, ProcessBlocks, ProcessBytes, Reset, Seek, SetKey, Start) in das Schaubild integriert. Das nachfolgende UML-Klassendiagramm ist unverändert.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«aapFunctionalCluster» | Cryptography daemon-based | CryptoContext | «aapAPI,aapNativeInterface» | DecryptorPrivateCtx | + GetCryptoService() + ProcessBlock() + Reset() + SetKey() | CryptoContext | «aapAPI,aapNativeInterface» | EncryptorPrivateCtx | + GetCryptoService() + ProcessBlock() + Reset() + SetKey() | CryptoContext | «aapAPI,aapNativeInterface» | SymmetricBlockCipherCtx | + GetCryptoService() + GetTransformation() + ProcessBlock() + ProcessBlocks() + Reset() + SetKey() | ExtensionService | «aapAPI,aapNativeInterface» | CryptoService | + GetBlockSize() + GetMaxInputSize() + GetMaxOutputSize() | Adaptive Application | «use» «use» «use» «use»

Vorkommen in AUTOSAR-Releases (2)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R23-11 AUTOSAR_AP_EXP_SWArchitecture S. 85 9.47 Figure 9.47: CryptoService and CryptoContext Interfaces
R24-11 AUTOSAR_AP_EXP_SWArchitecture S. 100 9.54 Figure 9.54: CryptoService and CryptoContext Interfaces