DEENESPTFRRUARHIKOZHNL
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 StreamCipherCtx oberhalb 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-Dienst Cryptography.

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 auf BlockService), 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).
  • 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 (..|>): Cryptography realisiert alle vier UML-Schnittstellen.
    • Nutzungsabhängigkeit («use»): Adaptive Application konsumiert die Schnittstellen direkt.
    • Navigation: Kontexte referenzieren über GetCryptoService() bzw. GetBlockService() die zugehörigen Service-Instanzen.

3. Dynamisches Verhalten & Sequenzablauf

  1. Kontext-Initialisierung & Parametrierung:
    • Erzeugung einer Kontextinstanz (StreamCipherCtx, SymmetricBlockCipherCtx, EncryptorPrivateCtx oder DecryptorPrivateCtx) via Krypto-Provider.
    • Bindung des Schlüssels über SetKey().
    • Bei StreamCipherCtx: Aufruf von Start() zur Initialisierung des Datenstroms bzw. der Keystream-Generierung.
  2. Puffer- und Kapazitätskalkulation:
    • Bei Blockchiffren: Abfrage statischer Limits (GetBlockSize(), GetMaxInputSize(), GetMaxOutputSize()) via CryptoService.
    • Bei Stromchiffren: Dynamische Bestimmung der Puffergrößen vor der Verarbeitung über EstimateMaxInputSize() und EstimateRequiredCapacity(); Statusabfrage via CountBytesInCache().
  3. Datenverarbeitung & Streaming:
    • Blockchiffrierung: Aufruf von ProcessBlock() für Einzelblöcke oder ProcessBlocks() für Blockfolgen.
    • Stromchiffrierung: Block-ausgerichtete Segmente werden mit ProcessBlocks() verarbeitet, verbleibende Teilbytes mit ProcessBytes(). Der finale unvollständige Block wird mit FinishBytes() abgeschlossen.
    • Wahlfreier Zugriff: Bei unterstützten Modi (IsSeekableMode() == true) kann der Keystream mittels Seek() repositioniert werden.
  4. Zustandsbereinigung & Reset:
    • Aufruf von Reset() setzt interne Puffer, IVs und Caches zurück; der gebundene Schlüssel (SetKey()) bleibt für Folgeoperationen erhalten.

4. Normative Relevanz & Entwickler-Hinweise

  • Streaming vs. Block-Verarbeitung: StreamCipherCtx erweitert 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 aus ProcessBytes() und FinishBytes() nutzen.
  • Puffermanagement & Überlaufschutz: Vor Übergabe von Daten an ProcessBytes() oder ProcessBlocks() muss die Applikation mittels EstimateMaxInputSize() und EstimateRequiredCapacity() 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.

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

R24-11 → R25-11 normative Änderung Vorgänger: FIG-672e05f032fe2470
  • 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:

Name: StreamCipherCtx | Technology: Native interface | Usage: Public API | Description: Generalized stream cipher context interface covering all modes of operation. | CountBytesInCache Count number of bytes now kept in the context cache. | EstimateMaxInputSize Estimate maximal number of input bytes that may be processed for filling of an output buffer without overflow. | EstimateRequiredCapacity Estimate minimal required capacity of the output buffer, which is enough for saving a result of input data processing. | FinishBytes Process the final part of message (that may be not aligned to the block-size boundary). | GetBlockService Get the BlockService instance. | GetTransformation Get the kind of transformation configured for this context: Encrypt or Decrypt. | IsBytewiseMode Check the operation mode for the byte-wise property. | IsSeekableMode Check if the seek operation is supported in the current mode. | ProcessBlocks Process initial parts of message aligned to the block-size boundary. | ProcessBytes Process a non-final part of message (that is not aligned to the block-size boundary). | Reset Clear the crypto context. | Seek Set the position of the next byte within the stream of the encryption/decryption gamma. | SetKey Set (deploy) a key to the stream cihper algorithm context. | Operations: | Start Initialize the context for a new data stream processing or generation (depending from the primitive). | «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 (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R25-11 AUTOSAR_AP_EXP_SWArchitecture S. 102 9.58 Figure 9.58: CryptoService and CryptoContext Interfaces