バックナンバーはこちら。
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タイムアウトにも依存する。
バックナンバーはこちら。
コメント