【Dcm】車両診断通信 その78【シミュレーション⑯】

【Dcm】車両診断通信 その78【シミュレーション⑯】 車両診断通信

バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/

はじめに

AUTOSAR-Dcmのシミュレーションの話。
SecurityAccessのシミュレーション結果。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

SecurityAccessのシミュレーションの結果(メッセージ)

太郎くん
太郎くん

SecurityAccessの復習するなら以下からどうぞー。

フクさん
フクさん

(なんか手馴れてきてるな・・・。)

フクさん
フクさん

じゃ、早速だけど、コメント付きのシミュレーション結果。

Send msg : 2713		// defaultSession(SecurityAccessサービス未サポートセッション)でSeed要求
Recv msg : 7f277f	// NRC$7F(serviceNotSupportedInActiveSession)
Send msg : 1003		// extendDiagnosticSessionへ遷移
Recv msg : 5003003001f4	// P2時間=48[ms],P2*時間=5000
Send msg : 2713deadbeef	// Seed要求としては間違ったメッセージ長
Recv msg : 7f2713	// NRC$13(incorrectMessageLengthOrInvalidFormat)
Send msg : 2714deadbeef	// Seed要求が成功していないのにKey送信
Recv msg : 7f2724	// NRC$24(requestSequenceError)
Send msg : 2711		// 存在しないSecurityLevelでSeed要求
Recv msg : 7f2712	// NRC$12(subFunctionNotSupported)
Send msg : 2714deadbeee	// 再度Seed要求が成功していないのにKey送信
Recv msg : 7f2724	// NRC$24(requestSequenceError)
Send msg : 2713		// Seed要求
Recv msg : 6713deadbeef	// Seed=0xdeadbeef
Send msg : 2714deadbeef // Key送信(Key=deadbeef)
Recv msg : 6714		// 
Send msg : 2713		// 再度Seed要求
Recv msg : 671300000000	// Seed=0x00000000(セキュリティアンロック済み)
Send msg : 2714deadbeef	// セキュリティアンロック済みの状態でKey送信
Recv msg : 7f2724	// NRC$24(requestSequenceError)
Send msg : 1003		// extendDiagnosticSessionへ再遷移(これでセキュリティロックが掛かる)
Recv msg : 5003003001f4	// P2時間=48[ms],P2*時間=5000
Send msg : 2713		// Seed要求
Recv msg : 6713deadbeef	// Seed=0xdeadbeef
Send msg : 2714deadbeef	// Key送信(Key=deadbeef)
Recv msg : 6714		// 
Send msg : 2713		// Seed要求
Recv msg : 671300000000	// Seed=0x00000000(セキュリティアンロック済み)
sleep : 2.048000 [ms]	// 2.048[ms] Wait
Send msg : 2713		// Seed要求
Recv msg : 671300000000	// Seed=0x00000000(セキュリティアンロック済み)
sleep : 4.900000 [ms]	// 4.900[ms] Wait
Send msg : 2713		// Seed要求
Recv msg : 671300000000	// Seed=0x00000000(セキュリティアンロック済み)
sleep : 5.100000 [ms]	// 5.100[ms] Wait (S3タイムアウトでdefaultSessionに戻る)
Send msg : 2713		// Seed要求
Recv msg : 7f277f	// NRC$7F(serviceNotSupportedInActiveSession) 
Send msg : 1003		// extendDiagnosticSessionへ遷移
Recv msg : 5003003001f4	// P2時間=48[ms],P2*時間=5000
Send msg : 2713		// Seed要求
Recv msg : 6713deadbeef	// Seed=0xdeadbeef
Send msg : 2714deadbeef // Key送信(Key=deadbeef)
Recv msg : 6714		//
Exiting

SecurityAccessのシミュレーションの結果(CAN回線)

フクさん
フクさん

そして、CAN回線ログ。(コメント付き)

Begin Triggerblock
 0.000000 Start of measurement
 
 // defaultSession(SecurityAccessサービス未サポートセッション)でSeed要求
 0.000000 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 0.001868 1  18DAF110x       Rx   d 8 03 7F 27 7F 55 55 55 55
 
 // extendDiagnosticSessionへ遷移
 0.005955 1  18DA10F1x       Rx   d 8 02 10 03 CC CC CC CC CC
 0.007832 1  18DAF110x       Rx   d 8 06 50 03 00 30 01 F4 55
 
 // Seed要求としては間違ったメッセージ長
 0.011968 1  18DA10F1x       Rx   d 8 06 27 13 DE AD BE EF CC
 0.013828 1  18DAF110x       Rx   d 8 03 7F 27 13 55 55 55 55
 
 // Seed要求が成功していないのにKey送信
 0.018940 1  18DA10F1x       Rx   d 8 06 27 14 DE AD BE EF CC
 0.020840 1  18DAF110x       Rx   d 8 03 7F 27 24 55 55 55 55
 
 // 存在しないSecurityLevelでSeed要求
 0.030081 1  18DA10F1x       Rx   d 8 02 27 11 CC CC CC CC CC
 0.032801 1  18DAF110x       Rx   d 8 03 7F 27 12 55 55 55 55
 
 // 再度Seed要求が成功していないのにKey送信
 0.038887 1  18DA10F1x       Rx   d 8 06 27 14 DE AD BE EE CC
 0.040812 1  18DAF110x       Rx   d 8 03 7F 27 24 55 55 55 55
 
 // Seed要求
 0.044892 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 0.046793 1  18DAF110x       Rx   d 8 06 67 13 DE AD BE EF 55
 
 // Key送信(Key=deadbeef)
 0.053854 1  18DA10F1x       Rx   d 8 06 27 14 DE AD BE EF CC
 0.055763 1  18DAF110x       Rx   d 8 02 67 14 55 55 55 55 55
 
 // 再度Seed要求
 0.059793 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 0.061718 1  18DAF110x       Rx   d 8 06 67 13 00 00 00 00 55
 
 // セキュリティアンロック済みの状態でKey送信
 0.065856 1  18DA10F1x       Rx   d 8 06 27 14 DE AD BE EF CC
 0.067715 1  18DAF110x       Rx   d 8 03 7F 27 24 55 55 55 55
 
 // extendDiagnosticSessionへ再遷移(これでセキュリティロックが掛かる)
 0.071778 1  18DA10F1x       Rx   d 8 02 10 03 CC CC CC CC CC
 0.073712 1  18DAF110x       Rx   d 8 06 50 03 00 30 01 F4 55
 
 // Seed要求
 0.077775 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 0.079684 1  18DAF110x       Rx   d 8 06 67 13 DE AD BE EF 55
 
 // Key送信(Key=deadbeef)
 0.083747 1  18DA10F1x       Rx   d 8 06 27 14 DE AD BE EF CC
 0.085795 1  18DAF110x       Rx   d 8 02 67 14 55 55 55 55 55
 
 // Seed要求
 0.091808 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 0.093749 1  18DAF110x       Rx   d 8 06 67 13 00 00 00 00 55
 
 // 2.048[ms] Wait
 
 // Seed要求
 2.149081 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 2.151039 1  18DAF110x       Rx   d 8 06 67 13 00 00 00 00 55
 
 // 4.900[ms] Wait
 
 // Seed要求
 7.057408 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 7.059390 1  18DAF110x       Rx   d 8 06 67 13 00 00 00 00 55
 
 // 5.100[ms] Wait (S3タイムアウトでdefaultSessionに戻る)
 
 // Seed要求
 12.165579 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 12.167602 1  18DAF110x       Rx   d 8 03 7F 27 7F 55 55 55 55
 
 // extendDiagnosticSessionへ遷移
 12.170600 1  18DA10F1x       Rx   d 8 02 10 03 CC CC CC CC CC
 12.172509 1  18DAF110x       Rx   d 8 06 50 03 00 30 01 F4 55
 
 // Seed要求
 12.175524 1  18DA10F1x       Rx   d 8 02 27 13 CC CC CC CC CC
 12.177572 1  18DAF110x       Rx   d 8 06 67 13 DE AD BE EF 55
 
 // Key送信(Key=deadbeef)
 12.180562 1  18DA10F1x       Rx   d 8 06 27 14 DE AD BE EF CC
 12.182446 1  18DAF110x       Rx   d 8 02 67 14 55 55 55 55 55
End TriggerBlock

SecurityAccessのシミュレーションの結果を見た感じの考察

太郎くん
太郎くん

うーん、なんというか、凄まじいやり取りになったね。

フクさん
フクさん

実際の通信電文に加えて、
Seed要求/Key送信の順番判定、
セッション状態、セキュリティ状態によって挙動が変わるからねー。
セッション状態に依存するってことはS3タイムアウトとも関連付くんで、
こんな感じの動作確認になるんだよ。

太郎くん
太郎くん

まぁでも、なんとなく分かってきたかなー。
電文自体はシンプルだし、セッション状態とセキュリティ状態がイメージできればOKな感じがするよ。

フクさん
フクさん

そうだね。
そこ2つの概念がイメージできていればそんなに混乱することは無いと思うよ。

まとめ

フクさん
フクさん

まとめだよ。

  • SecurityAccessのシミュレーションの結果を確認。
    • メッセージレベルの確認。
    • CAN回線レベルの確認。
  • SecurityAccessはセッション状態、セキュリティ状態によって挙動が変わる。
    • セッション状態に紐づく形でS3タイムアウトにも依存する。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました