AUTOSAR_AP_EXP_SWArchitecture
FIG-2bf34ebf0c44dacf
395 × 509 px
1 Release(s)
Figure 9.46: BlockService and CryptoContext Interfaces
SHA-256 Inhalts-Fingerabdruck:
2bf34ebf0c44dacf3ed3e3714378bf94eccc85f6319506977f855b4744e06cde
✦
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 / Schnittstellen- und Komponentenarchitektur (Interface Realization & Usage).
- Architektur-Kontext: AUTOSAR Adaptive Platform (ARA), Functional Cluster Cryptography (
ara::crypto), SpezifikationAUTOSAR_EXP_SWArchitecture(Release R21-11). - Technischer Zweck: Spezifikation der objektorientierten C++-Schnittstellen für symmetrische Strom- und Blockchiffren-Operationen. Das Diagramm illustriert das Extension-Service-Pattern: Entkopplung der primären Stream-Transformations-Pipeline (
StreamCipherCtx) von algorithmusspezifischen Block- und Initialisierungsvektor-Metadaten (BlockService) in einer daemon-basierten Implementierungsarchitektur.
2. Komponenten, Entitäten & Schnittstellen
Entitäten & Komponenten
Adaptive Application(UML-Component): Konsumenten-Prozess im User Space (POSIX OS), der kryptografische Operationen über die standardisierte C++-API anfordert.«aapFunctionalCluster» Cryptography(daemon-based): Dienstleistender Functional Cluster. Läuft als eigenständiger Daemon-Prozess (ARA Crypto Daemon) mit Anbindung an Plattform-Sicherheitsmodule (z. B. HSM, Crypto-Treiber, Secure Elements via IPC/Shared Memory).
Schnittstellen (Interfaces)
StreamCipherCtx(«aapAPI, aapNativeInterface», Rolle:CryptoContext): Zustandsbehafteter Krypto-Kontext (ara::crypto::cryp::StreamCipherCtx) zur symmetrischen Ver- und Entschlüsselung.- Lebenszyklus & Transformation:
SetKey(),Start(),Reset(),GetTransformation(). - Datentransfer & Verarbeitung:
ProcessBytes(),ProcessBlocks(),FinishBytes(). - Streaming- & Modus-Prüfung:
IsBytewiseMode(),IsSeekableMode(),Seek()(z. B. für Counter-Modi wie AES-CTR). - Puffermanagement & Prädiktion:
CountBytesInCache(),EstimateMaxInputSize(),EstimateRequiredCapacity(). - Service-Kopplung:
GetBlockService()(Liefert Referenz/Pointer auf assoziierten Blockdienst).
- Lebenszyklus & Transformation:
BlockService(«aapAPI, aapNativeInterface», Rolle:ExtensionService): Zusatzschnittstelle (ara::crypto::cryp::BlockService) für kryptografische Primitive, die auf Blockchiffren basieren.- Methoden:
GetBlockSize(),GetIvSize(),GetActualIvBitLength(),IsValidIvSize().
- Methoden:
Beziehungen & Abhängigkeiten
- Realization (
--▷gestrichelt): Der ClusterCryptographyimplementiert die nativen SchnittstellenStreamCipherCtxundBlockService. - Usage (
..> «use»): DieAdaptive Applicationnutzt beide Schnittstellen direkt über typisierte C++-Smart-Pointer (CryptoContext::Uptrbzw. über Rückgabe vonGetBlockService()). - Assoziation via Factory-Methode:
StreamCipherCtx::GetBlockService()realisiert eine lose Kopplung; Chiffren ohne Blockcharakteristik (z. B. ChaCha20) geben hierbeinullptrzurück.
3. Dynamisches Verhalten & Sequenzablauf
Typischer Ausführungs- und Zustandsübergangspfad für eine Adaptive Application:
- Kontext-Instanziierung & Schlüsselbindung:
- Erzeugen des
StreamCipherCtxüber den zuständigenCryptoProvider. - Bindung des Schlüssels über
SetKey(cryptoKey).
- Erzeugen des
- IV-/Parameter-Validierung via ExtensionService:
- Aufruf von
GetBlockService()am Kontext. - Validierung der Vektor- und Blockgrenzen (
GetBlockSize(),IsValidIvSize(ivSize)). - Initialisierung des Chiffrierzustands über
Start(iv).
- Aufruf von
- Payload-Verarbeitung (Streaming / Blockweise):
- Abfrage der Pufferanforderungen via
EstimateRequiredCapacity()zur Allokation von Zielspeicher. - Transformation mittels
ProcessBlocks()(ausgerichtete Blöcke, performant) oderProcessBytes()(Byte-Stream, Puffercaching). - Optional: Direktes Springen im Stream via
Seek(offset)(nur wennIsSeekableMode() == true).
- Abfrage der Pufferanforderungen via
- Finalisierung & Bereinigung:
FinishBytes()verarbeitet verbleibende Cache-Inhalte und schreibt Padding.Reset()versetzt den Kontext ohne Re-Allokation in den Ausgangszustand zurück.
4. Normative Relevanz & Entwickler-Hinweise
- Extension Service Pattern (
ara::crypto): Entwickler dürfen nicht davon ausgehen, dass jederStreamCipherCtxzwingend einenBlockServicebereitstellt. Vor Aufruf vonGetBlockSize()muss der Rückgabewert vonGetBlockService()zwingend aufnullptrgeprüft werden. - Deterministisches Speichermanagement:
Dynamische Reallokationen im Verarbeitungszyklus sind strikt zu vermeiden. Entwickler müssen
EstimateRequiredCapacity()vor Aufruf vonProcessBytes()/FinishBytes()auswerten, um Zielpuffer (ReadOnlyMemRegion/ReadWriteMemRegion) statisch bzw. deterministisch vorzuhalten. - IPC- & Daemon-Overhead:
Da
Cryptographyalsdaemon-basedgekennzeichnet ist, erzeugen Kontextwechsel über Prozessgrenzen hinweg signifikante Latenzen. Zur Minimierung des IPC-Overheads ist blockweises Verarbeiten (ProcessBlocks()) mit maximaler Chunk-Größe gegenüber byteweisem Streaming (ProcessBytes()) in echtzeitkritischen Pfaden zwingend zu bevorzugen. - Thread-Safety & Reentrancy:
Instanzen von
StreamCipherCtxsind zustandsbehaftet und standardmäßig nicht thread-sicher. Pro nebenläufigem Thread muss ein separater Kontext über denCryptoProviderinstanziiert werden.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.