DEENESPTFRRUARHIKOZHNL

structure ara::crypto::SecureCounter

[SWS_CRYPT_30001] Upstream: RS_CRYPTO_02401

struct SecureCounter {...};

128 bit secure counter made up of two uint64_t’s representing the most significant and least significant bits

Header-Datei#include "ara/crypto/common/base_id_types.h"
Forwarding-Header#include "ara/crypto/crypto_fwd.h"
Scopenamespace ara::crypto

Guide utilisateurGÉNÉRÉ PAR IA

Fournit un compteur de sécurité de 128 bits composé de deux valeurs de 64 bits pour les bits de poids faible et de poids fort.
GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : b4749477e882 Provenance Questions ouvertes (3)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Fournit un compteur de sécurité de 128 bits composé de deux valeurs de 64 bits pour les bits de poids faible et de poids fort.

La structure ara::crypto::SecureCounter sert dans le module crypto de compteur de sécurité de 128 bits, composé de deux entiers de 64 bits pour les bits de poids le plus faible ([SWS_CRYPT_30002]) et les bits de poids le plus fort ([SWS_CRYPT_30003]). Les composants appelants utilisent ce type de données pour représenter des états de compteur robustes, les incrémentations et les logiques de retenue entre les sous-mots devant être gérées manuellement. En tant que pur type valeur, la structure n’offre aucune synchronisation interne, c’est pourquoi les accès concurrents dans des environnements multithreads doivent impérativement être coordonnés de manière externe.

Contexte

La structure ara::crypto::SecureCounter agit au sein du module crypto de l’AUTOSAR Adaptive Platform comme un type de données fondamental pour la représentation d’un compteur cryptographique d’une largeur de 128 bits. Définie dans le fichier d’en-tête ara/crypto/common/base_id_types.h, la structure de données est composée de deux entiers de 64 bits du type std::uint64_t : l’élément de données mLSQW pour les 64 bits de poids le plus faible conformément à [SWS_CRYPT_30002] ainsi que l’élément de données mMSQW pour les 64 bits de poids le plus fort conformément à [SWS_CRYPT_30003]. Dans les architectures de sécurité, les valeurs de compteur de cet ordre de grandeur servent à garantir la fraîcheur temporelle des messages et à repousser efficacement les attaques par rejeu. Interpretation : en tant que type de données standardisé, la structure devrait principalement servir de format d’interface et de stockage pour des compteurs monotones ou des numéros de séquence échangés par des protocoles cryptographiques, des pilotes et des composants de sécurité proches du matériel. Question Q-57197e2ecabd5cab (ouverte) Comme la spécification déclare ara::crypto::SecureCounter comme un pur conteneur de données sans liaison algorithmique directe, les couches supérieures interagissent directement avec les deux éléments constitutifs afin de vérifier les états de compteur, de les persister ou de les intégrer dans les messages de protocole.

Cycle de vie

En tant que structure C++ classique (struct), ara::crypto::SecureCounter est soumise à un cycle de vie léger sans gestion dynamique de la mémoire ni logique de gestion avec état. L’instanciation s’effectue habituellement directement sur la pile sous forme de type valeur local ou intégrée en tant qu’élément de champ dans des contextes supérieurs tels que des en-têtes d’événements de sécurité ou des descripteurs de session cryptographique. En tant que simple conteneur de données, la structure présente probablement une sémantique de valeur C++ standard avec un comportement de copie et d’affectation implicite, mais n’offre aucun mécanisme de synchronisation interne pour l’accès concurrent. Question Q-a4d95542ea77870d (ouverte) Pour les développeurs, cela signifie que les accès simultanés en lecture et en écriture provenant de différents threads doivent être sécurisés par des primitives de synchronisation externes afin d’éviter les incohérences de données lors des mises à jour du compteur. Le cycle de vie d’une instance se termine automatiquement lors de la sortie de la portée respective, sans qu’aucune libération ni aucun nettoyage explicites ne soient nécessaires.

Parcours d'utilisation

Le chemin d’utilisation typique comprend l’initialisation, l’incrémentation pas à pas ainsi que la lecture de la valeur combinée du compteur de 128 bits via les deux composants structurels. Un appelant instancie d’abord la structure et affecte les états de compteur initiaux au sous-mot de poids faible mLSQW ([SWS_CRYPT_30002]) ainsi qu’au sous-mot de poids fort mMSQW ([SWS_CRYPT_30003]). Lors des opérations de comptage continues, c’est principalement le mot de poids faible mLSQW qui est incrémenté. Lorsque mLSQW atteint la valeur maximale de la plage de 64 bits, une retenue arithmétique s’effectue sur le mot de poids fort mMSQW, qui est incrémenté de un. Interpretation : les opérations arithmétiques telles que l’incrémentation et la gestion de la retenue devraient être réalisées du côté appelant, étant donné que la spécification ne déclare aucune fonction membre propre pour ara::crypto::SecureCounter. Question Q-68babc70b53a5745 (ouverte) Lors de la transmission ou de la persistance, les deux éléments de 64 bits sont sérialisés de manière structurée, en veillant à un ordre cohérent des octets et des mots afin d’exclure toute mauvaise interprétation de la valeur globale du côté récepteur.

Scénarios d'erreur

Comme ara::crypto::SecureCounter représente une simple structure de données sans méthodes propres, la structure ne lève pas d’exceptions lors des opérations et ne renvoie ni spécifications d’erreur ni codes d’erreur du type ara::core::ErrorCode. Par conséquent, les scénarios d’erreur n’apparaissent pas au sein de la structure elle-même, mais résultent d’un traitement incorrect des deux sous-mots dans les couches logicielles appelantes. Un scénario d’erreur critique est le dépassement arithmétique inaperçu du compteur global lorsque mLSQW ([SWS_CRYPT_30002]) et mMSQW ([SWS_CRYPT_30003]) épuisent tous deux leur plage de valeurs maximale et reviennent à zéro, ce qui peut entraîner des failles de sécurité dans les mécanismes de protection contre le rejeu. D’autres violations de préconditions et de postconditions surviennent lorsque la retenue de mLSQW vers mMSQW est omise lors des mises à jour ou lorsque des valeurs de mémoire non définies s’immiscent dans les calculs en cas d’initialisation incomplète. Les composants appelants doivent donc s’assurer, avant tout traitement ultérieur, que les deux éléments de données sont initialisés de manière cohérente et que les logiques de retenue sont implémentées sans erreur.

Ce texte a été généré par une IA sur la base de la spécification AUTOSAR R25-11.

Diagramme de classes UML

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__crypto__SecureCounter126 «struct» SecureCounter + mLSQW + mMSQW

Constantes

mLSQW variable

least significant 64 bits

mMSQW variable

most significant 64 bits

Documentation des constantes / variables

variable mLSQW [SWS_CRYPT_30002] Upstream: RS_CRYPTO_02401

std::uint64_t mLSQW;

least significant 64 bits

Header-Datei#include "ara/crypto/common/base_id_types.h"
Scopestruct ara::crypto::SecureCounter
SymbolmLSQW
Typstd::uint64_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CRYPT_30002
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CRYPT_30002@rel:R25-11#cc293c04
Content hash
cc293c04
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Cryptography.pdf#nameddest=SWS_CRYPT_30002
Status: valid/unmigrated Version: rel:R25-11#9c1bba58 Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CRYPT_30002@rel:R25-11#9c1bba58
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#cc293c042026-09-30
  • R19-11rel:R19-11#5e8b1de42026-10-14
  • R20-11rel:R20-11#2cbc47402026-10-14
  • R21-11rel:R21-11#2cbc47402026-10-14
  • R22-11rel:R22-11#7b43d24b2026-10-14
  • R23-11rel:R23-11#2949b7102026-10-14
  • R24-11rel:R24-11#2949b7102026-10-14
  • R25-11rel:R25-11#9c1bba582026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

variable mMSQW [SWS_CRYPT_30003] Upstream: RS_CRYPTO_02401

std::uint64_t mMSQW;

most significant 64 bits

Header-Datei#include "ara/crypto/common/base_id_types.h"
Scopestruct ara::crypto::SecureCounter
SymbolmMSQW
Typstd::uint64_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CRYPT_30003
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CRYPT_30003@rel:R25-11#2c3bfe79
Content hash
2c3bfe79
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Cryptography.pdf#nameddest=SWS_CRYPT_30003
Status: valid/unmigrated Version: rel:R25-11#f08f9154 Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CRYPT_30003@rel:R25-11#f08f9154
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#2c3bfe792026-09-30
  • R19-11rel:R19-11#5f040e0b2026-10-14
  • R20-11rel:R20-11#df9cc1732026-10-14
  • R21-11rel:R21-11#64ce58302026-10-14
  • R22-11rel:R22-11#f838a21c2026-10-14
  • R23-11rel:R23-11#e9d5ab982026-10-14
  • R24-11rel:R24-11#0cbd132d2026-10-14
  • R25-11rel:R25-11#f08f91542026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill