AUTOSAR仕様の曖昧さによる解釈の違いとその影響
例: Crypt Stack Operation Mode
はじめに
AUTOSARの仕様書には実装レベルまで詳細に記載されたものと曖昧なものがあり、ベンダーやアプリケーション設計者の解釈が分かれることがあります。本記事では、Crypt StackのOperation Modeを例に、解釈違いとその問題を具体的に説明します
参照AUTOSARバージョン: R20-11
CSM仕様
CryptoDriver仕様
Crypto Stack Operation Mode (CSM仕様)
Crypto Stack Operation Mode (CryptoDriver仕様)
日本語訳(仕様に基づく):
暗号プリミティブのオペレーションは、その暗号プリミティブのどの部分を実行するかを規定する。Operation Modeには3種類あり、「START」は新しい要求を示し前回の要求をキャンセル、「UPDATE」は入力データを期待、「FINISH」は全データ入力完了を示す。また、連結で複数オペレーションを一度に実行可能(SINGLECALL)。
仕様解釈例:
- 大量データ時はSINGLECALL、またはSTART → UPDATE(複数回) → FINISHで分割入力。
曖昧な仕様例
Csm_MacGenerateのmodeパラメータで、分割データ3つ(データ1/2/3)の場合、FINISH呼び出し時の入力データ扱いが曖昧。
解釈A(一部ベンダー):
START: データ1
UPDATE: データ2
UPDATE: データ3
FINISH: 入力データ無視(サイズ>0でも)
解釈B(他ベンダー):
START: データ1
UPDATE: データ2
FINISH: データ3(サイズ>0で使用)
関係者の立場
- BSW Crypto Stack設計者(AUTOSARベンダー)
- アプリケーション(CDD)設計者(サプライヤー)
具体的な事例
BSWベンダー実装: サイズ>0でデータ扱う(柔軟対応)。
CDD設計者実装(解釈A誤り):
// 一回目: START
Csm_MacGenerate(jobId, Crypto_OperationMode_Start, データ1, size1, mac, macSize);
// 二回目: UPDATE
Csm_MacGenerate(jobId, Crypto_OperationMode_Update, データ2, size2, mac, macSize);
// 三回目: UPDATE
Csm_MacGenerate(jobId, Crypto_OperationMode_Update, データ3, size3, mac, macSize);
// 四回目: FINISH(データ3再渡し、無視想定)
Csm_MacGenerate(jobId, Crypto_OperationMode_Finish, データ3, size3, mac, macSize);
結果: データ1+2+3+3でMAC計算され期待値不一致。
影響と対策
影響: MAC値不一致で検証失敗。
対策: FINISH時はサイズを0に設定。
//修正前
Csm_MacGenerate(jobId, Crypto_OperationMode_Finish,
データ3,
- size3,
mac,
macSize);
//修正後
Csm_MacGenerate(jobId, Crypto_OperationMode_Finish,
データ3,
+ 0u, // サイズ0で入力無視
mac,
macSize);
//これでデータ1+2+3のみ使用。
見解
BSWとアプリ設計者の解釈ずれが不具合原因。
同一チームなら問題になりにくいが、別チーム時は顕在化しやすい。
RTE経由の場合: OperationModeはSINGLECALL固定で曖昧さ回避可能。

まとめ
AUTOSARは標準化を目指すが、ベンダー解釈差で不具合混入のリスクあり。
AUTOSAR仕様の思い込みをなくし、高品質なソフトウェア開発ライフを送れますように!







