AUTOSAR_EXP_SWArchitecture
FIG-70313ccefe6db35e
816 × 407 px
1 Release(s)
Figure 9.45: CryptoService and CryptoContext Interfaces
SHA-256 Inhalts-Fingerabdruck:
70313ccefe6db35e0108605b151d1997dbdb6c6003d667ec870bb444e6fc43c0
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
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 Applicationund der Plattform-Realisierung im Modusdaemon-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().
- Methoden:
CryptoContext::DecryptorPrivateCtx: Asymmetrischer/privater Entschlüsselungskontext.- Methoden:
+ GetCryptoService(),+ ProcessBlock(),+ Reset(),+ SetKey().
- Methoden:
CryptoContext::SymmetricBlockCipherCtx: Symmetrischer Blockchiffrier-Kontext (z. B. AES-CBC, AES-GCM).- Methoden:
+ GetCryptoService(),+ GetTransformation(),+ ProcessBlock(),+ ProcessBlocks(),+ Reset(),+ SetKey().
- Methoden:
ExtensionService::CryptoService: Dienst zur Bereitstellung algorhythmusspezifischer Parameter und Puffergrenzen.- Methoden:
+ GetBlockSize(),+ GetMaxInputSize(),+ GetMaxOutputSize().
- Methoden:
- Beziehungen & Vererbung:
- Interface-Realization (gestrichelte Linie mit geschlossener, nicht ausgefüllter Pfeilspitze):
Cryptographyrealisiert alle vier nativen Schnittstellen. - Nutzungsabhängigkeit (
«use», gestrichelte Pfeile):Adaptive Applicationbindet und konsumiert alle vier Interfaces direkt. - Assoziation / Navigation: Jeder
CryptoContextreferenziert überGetCryptoService()die zugehörige Instanz vonExtensionService::CryptoService.
- Interface-Realization (gestrichelte Linie mit geschlossener, nicht ausgefüllter Pfeilspitze):
3. Dynamisches Verhalten & Sequenzablauf
Obwohl als statisches Strukturdiagramm dargestellt, erzwingt das API-Design folgenden Ablauf:
- Kontext-Allokation & Konfiguration:
- Erzeugung/Bezug einer Kontextinstanz (
EncryptorPrivateCtx,DecryptorPrivateCtxoderSymmetricBlockCipherCtx) über eine Factory/Provider-API. - Bindung des Schlüssels über
SetKey().
- Erzeugung/Bezug einer Kontextinstanz (
- Puffer- und Größenabfrage:
- Aufruf von
GetCryptoService()am Kontext liefertCryptoService. - Abfrage von Block- und Maximalgrößen (
GetBlockSize(),GetMaxInputSize(),GetMaxOutputSize()) zur Vorallokation applikationsseitiger Ein-/Ausgabepuffer.
- Aufruf von
- 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().
- Synchroner Aufruf von
- 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 zwingendProcessBlocks()(Streaming/Batching) statt sequenziellerProcessBlock()-Aufrufe verwenden. - Puffer-Vorvalidierung: Vor Aufruf von
ProcessBlock(s)muss die Applikation die Puffergrößen strikt gegenGetMaxInputSize()undGetMaxOutputSize()validieren. Fehldimensionierungen führen zu Fehlern aus derCryptoErrorDomain(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 derAdaptive Applicationkopiert. - Thread-Sicherheit: Instanzen von
CryptoContextsind zustandsbehaftet und in der Regel nicht reentrant/thread-safe. Nebenläufige Verschlüsselungsoperationen erfordern separate Kontext-Instanzen je Thread.