Предоставляет 128-битный счетчик безопасности из двух 64-битных значений для младших и старших битов.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b4749477e882ПроисхождениеОткрытые вопросы (3)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет 128-битный счетчик безопасности из двух 64-битных значений для младших и старших битов.
Структура ara::crypto::SecureCounter служит в модуле crypto 128-битным счетчиком безопасности, состоящим из двух 64-битных целых чисел для наименее значащих битов ([SWS_CRYPT_30002]) и наиболее значащих битов ([SWS_CRYPT_30003]). Вызывающие компоненты используют этот тип данных для представления надежных значений счетчика, при этом инкрементированием и логикой переноса между полусловами необходимо управлять вручную. Будучи чисто семантическим типом значений, структура не предоставляет внутренней синхронизации, из-за чего параллельный доступ в многопоточных окружениях должен обязательно координироваться извне.
Контекст
Структура ara::crypto::SecureCounter функционирует внутри модуля crypto AUTOSAR Adaptive Platform как базовый тип данных для представления 128-битного криптографического счетчика. Определенная в заголовочном файле ara/crypto/common/base_id_types.h, данная структура данных состоит из двух 64-битных целых чисел типа std::uint64_t: элемента данных mLSQW для младших 64 бит согласно [SWS_CRYPT_30002], а также элемента данных mMSQW для старших 64 бит согласно [SWS_CRYPT_30003]. В архитектурах безопасности значения счетчика такого масштаба служат для обеспечения временной актуальности сообщений и эффективного отражения атак повторного воспроизведения. Интерпретация: в качестве стандартизированного типа данных структура, вероятно, служит главным образом форматом интерфейса и хранения для монотонных счетчиков или порядковых номеров, которыми обмениваются криптографические протоколы, драйверы и аппаратно-ориентированные компоненты безопасности. Вопрос Q-57197e2ecabd5cab (открытый) Поскольку спецификация декларирует ara::crypto::SecureCounter как чистый контейнер данных без прямой алгоритмической привязки, вышележащие уровни напрямую взаимодействуют с обоими компонентами, чтобы проверять показания счетчика, сохранять их или внедрять в сообщения протокола.
Жизненный цикл
Как классическая структура C++ (struct), ara::crypto::SecureCounter имеет легковесный жизненный цикл без динамического управления памятью или логики управления с сохранением состояния. Создание экземпляра обычно выполняется непосредственно на стеке в качестве локального типа значения либо во внедренном виде как элемент поля в вышестоящих контекстах, таких как заголовки событий безопасности или дескрипторы криптографических сессий. Предположительно, структура как простой контейнер данных обладает регулярной семантикой значений C++ с неявным поведением копирования и присваивания, однако не предоставляет внутренних механизмов синхронизации для параллельного доступа. Вопрос Q-a4d95542ea77870d (открытый) Для разработчиков это означает, что одновременные операции чтения и записи из разных потоков должны быть защищены внешними примитивами синхронизации во избежание несогласованности данных при обновлениях счетчика. Жизненный цикл экземпляра автоматически завершается при выходе из соответствующей области видимости, при этом явного освобождения или очистки не требуется.
Путь использования
Типичный сценарий использования включает инициализацию, пошаговое инкрементирование, а также считывание комбинированного 128-битного значения счетчика через оба структурных компонента. Вызывающая сторона сначала создает экземпляр структуры и присваивает начальные значения счетчика младшему полуслову mLSQW ([SWS_CRYPT_30002]) и старшему полуслову mMSQW ([SWS_CRYPT_30003]). При непрерывных операциях подсчета в первую очередь инкрементируется младшее слово mLSQW. Если mLSQW достигает максимального значения 64-битного диапазона, выполняется вычислительный перенос в старшее слово mMSQW, которое увеличивается на единицу. Интерпретация: арифметические операции, такие как инкрементирование и обработка переноса, вероятно, реализуются на стороне вызывающего компонента, поскольку спецификация для ara::crypto::SecureCounter не объявляет собственных функций-членов. Вопрос Q-68babc70b53a5745 (открытый) При передаче или сохранении оба 64-битных элемента структурированно сериализуются, при этом необходимо следить за согласованным порядком байтов и слов, чтобы исключить неверную интерпретацию общего значения на стороне получателя.
Сценарии ошибок
Поскольку ara::crypto::SecureCounter представляет собой чистую структуру данных без собственных методов, при операциях структура не генерирует исключений и не возвращает спецификаций ошибок или кодов ошибок типа ara::core::ErrorCode. Сценарии сбоев, следовательно, возникают не внутри самой структуры, а из-за некорректной обработки обоих полуслов в вызывающих программных уровнях. Критическим сценарием ошибки является незамеченное арифметическое переполнение общего счетчика, когда и mLSQW ([SWS_CRYPT_30002]), и mMSQW ([SWS_CRYPT_30003]) исчерпывают свой максимальный диапазон значений и сбрасываются в ноль, что в механизмах защиты от повторного воспроизведения может привести к уязвимостям безопасности. Другие нарушения предусловий и постусловий возникают, если при обновлениях упущен перенос из mLSQW в mMSQW или если при неполной инициализации неопределенные значения памяти попадают в вычисления. Поэтому вызывающие компоненты перед дальнейшей обработкой должны убедиться, что оба элемента данных инициализированы согласованно, а логика переноса реализована безошибочно.
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал