AUTOSAR_AP_EXP_SWArchitecture
FIG-7c9aff6fa816e25c
930 × 1143 px
1 Release(s)
Figure 9.58: CryptoService and CryptoContext Interfaces
SHA-256 Inhalts-Fingerabdruck:
7c9aff6fa816e25c40d7642cef30e0ee5a35f2761aef96d7f46a30159425d6e2
✦
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: Hybrides Architekturschaubild, bestehend aus einer tabellarischen Schnittstellenspezifikation (Interface Specification Table) und einem UML-Klassendiagramm (AUTOSAR Adaptive Platform).
- Architektur-Kontext: Spezifikation der C++ Native API-Bindung für den Functional Cluster Cryptography (
ara::crypto) gemäß AUTOSAR Adaptive Platform (Release R25-11,AUTOSAR_AP_EXP_SWArchitecture). - Technischer Zweck: Ergänzung der Schnittstellenspezifikation um den Allzweck-Stromchiffrierkontext
StreamCipherCtxoberhalb der bestehenden Klassenarchitektur. Das Diagramm visualisiert die Trennung zwischen symmetrischem Streaming (StreamCipherCtx), zustandsbehafteten privaten bzw. Block-Rechenkontexten (CryptoContext) und algorhythmischen Metadatendiensten (ExtensionService), entkoppelt über den daemon-basierten Plattform-DienstCryptography.
2. Komponenten, Entitäten & Schnittstellen
- Komponenten / Akteure:
Adaptive Application: Anwendungsprozess im User Space, agiert als Service-Konsument der nativen Schnittstellen.«aapFunctionalCluster» Cryptography(Tag:daemon-based): Plattform-Daemon, der Hardware-Security-Module (HSM), Krypto-Treiber und Software-Primitive kapselt und alle Schnittstellen realisiert.
- Tabellarische Schnittstelle (
Native interface,Public API):StreamCipherCtx: Generalisierte Stromchiffrier-Kontextschnittstelle für alle Betriebsmodi.- Operationen:
CountBytesInCache(Zählung gecachter Bytes),EstimateMaxInputSize(Abschätzung maximal verarbeitbarer Eingabebytes ohne Pufferüberlauf),EstimateRequiredCapacity(Ermittlung minimal nötiger Ausgabepufferkapazität),FinishBytes(Verarbeitung unvollständiger Restblöcke am Nachrichtenende),GetBlockService(Referenz aufBlockService),GetTransformation(Transformationsart Encrypt/Decrypt),IsBytewiseMode(Prüfung auf byte-granularen Betriebsmodus),IsSeekableMode(Prüfung auf wahlfreien Zugriff),ProcessBlocks(Verarbeitung blockgrößen-ausgerichteter Teilnachrichten),ProcessBytes(Verarbeitung unvollständiger Block-Zwischensegmente),Reset(Rücksetzen des Kontexts),Seek(Positionierung im Gamma-Keystream),SetKey(Schlüsselbindung),Start(Initialisierung eines neuen Datenstroms).
- Operationen:
- UML-Schnittstellen (Stereotypen:
«aapAPI, aapNativeInterface»):CryptoContext::EncryptorPrivateCtx: Asymmetrischer/privater Verschlüsselungskontext (+ GetCryptoService(),+ ProcessBlock(),+ Reset(),+ SetKey()).CryptoContext::DecryptorPrivateCtx: Asymmetrischer/privater Entschlüsselungskontext (+ GetCryptoService(),+ ProcessBlock(),+ Reset(),+ SetKey()).CryptoContext::SymmetricBlockCipherCtx: Symmetrischer Blockchiffrier-Kontext (+ GetCryptoService(),+ GetTransformation(),+ ProcessBlock(),+ ProcessBlocks(),+ Reset(),+ SetKey()).ExtensionService::CryptoService: Dienst für Algorithmenparameter und Puffergrenzen (+ GetBlockSize(),+ GetMaxInputSize(),+ GetMaxOutputSize()).
- Beziehungen & Vererbung:
- Interface-Realization (
..|>):Cryptographyrealisiert alle vier UML-Schnittstellen. - Nutzungsabhängigkeit (
«use»):Adaptive Applicationkonsumiert die Schnittstellen direkt. - Navigation: Kontexte referenzieren über
GetCryptoService()bzw.GetBlockService()die zugehörigen Service-Instanzen.
- Interface-Realization (
3. Dynamisches Verhalten & Sequenzablauf
- Kontext-Initialisierung & Parametrierung:
- Erzeugung einer Kontextinstanz (
StreamCipherCtx,SymmetricBlockCipherCtx,EncryptorPrivateCtxoderDecryptorPrivateCtx) via Krypto-Provider. - Bindung des Schlüssels über
SetKey(). - Bei
StreamCipherCtx: Aufruf vonStart()zur Initialisierung des Datenstroms bzw. der Keystream-Generierung.
- Erzeugung einer Kontextinstanz (
- Puffer- und Kapazitätskalkulation:
- Bei Blockchiffren: Abfrage statischer Limits (
GetBlockSize(),GetMaxInputSize(),GetMaxOutputSize()) viaCryptoService. - Bei Stromchiffren: Dynamische Bestimmung der Puffergrößen vor der Verarbeitung über
EstimateMaxInputSize()undEstimateRequiredCapacity(); Statusabfrage viaCountBytesInCache().
- Bei Blockchiffren: Abfrage statischer Limits (
- Datenverarbeitung & Streaming:
- Blockchiffrierung: Aufruf von
ProcessBlock()für Einzelblöcke oderProcessBlocks()für Blockfolgen. - Stromchiffrierung: Block-ausgerichtete Segmente werden mit
ProcessBlocks()verarbeitet, verbleibende Teilbytes mitProcessBytes(). Der finale unvollständige Block wird mitFinishBytes()abgeschlossen. - Wahlfreier Zugriff: Bei unterstützten Modi (
IsSeekableMode() == true) kann der Keystream mittelsSeek()repositioniert werden.
- Blockchiffrierung: Aufruf von
- Zustandsbereinigung & Reset:
- Aufruf von
Reset()setzt interne Puffer, IVs und Caches zurück; der gebundene Schlüssel (SetKey()) bleibt für Folgeoperationen erhalten.
- Aufruf von
4. Normative Relevanz & Entwickler-Hinweise
- Streaming vs. Block-Verarbeitung:
StreamCipherCtxerweitert die blockbasierte API (SymmetricBlockCipherCtx) um kontinuierliche Bytestrom-Verarbeitung ohne Vorabausrichtung auf feste Blockgrenzen. Entwickler müssen für nicht-blockbündige Nachrichtenströme die Kombination ausProcessBytes()undFinishBytes()nutzen. - Puffermanagement & Überlaufschutz: Vor Übergabe von Daten an
ProcessBytes()oderProcessBlocks()muss die Applikation mittelsEstimateMaxInputSize()undEstimateRequiredCapacity()sicherstellen, dass Ein- und Ausgabepuffer ausreichend dimensioniert sind.CountBytesInCache()dient zur Überwachung verbleibender Zwischenpufferbytes. - IPC-Performance bei Daemon-Architektur: Beide Schnittstellenfamilien laufen gegen den Plattform-Daemon
Cryptography (daemon-based). Zur Minimierung von Kontextwechseln und IPC-Latenzen sind blockweise Batch-Aufrufe (ProcessBlocks()) sequenziellen Einzelaufrufen (ProcessBytes()/ProcessBlock()) vorzuziehen. - Schlüssel- und Thread-Sicherheit: Schlüsselhandles werden isoliert übergeben (
SetKey()), Schlüsselmaterial verbleibt im geschützten Speicherbereich des Daemons bzw. HSM. Kontext-Instanzen sind zustandsbehaftet und nicht thread-safe.