안녕하세요, 코딩 푸는 남자 입니다.

우리는 지난 시간에 Sync Message와 Latest Fv에 대해 알아 보았습니다.
이번 시간에는 Construct Fv, Previous Fv 에 대해 알아 보는 시간을 갖도록 하겠습니다.
*Note : Contruct Fv와 Previous Fv는 contents는 동일하고, 그 목적이 조금 다르다고 이해 하시면 됩니다.
오늘은 Secure Message를 송신하는 Sender Side를 가지고 설명을 해 보고자 합니다.
* Note : Sender Side가 Receiver Side에 비해 비교적 쉽게 접근 가능 하고, Receiver Side는 향후에 자세히 알아볼 예정 입니다.
우선 Construct Fv, Previous Fv는 Secure Message 마다 개별적으로 가지고 있어야 합니다.
만약 0x100, 0x200, 0x300 3개의 Secure Message를 전송하고자 하는 ECU라면, 아래와 같은 Fv를 관리 해야 하겠네요.
![]() |
각각의 Contruct Fv와 Previous Fv는 무슨 내용을 관리 하고 있을까요?
Autosar에서는 다음과 같이 정의 하고 있습니다.
![]() 출처 : AUTOSAR_SWS_SecureOnboardCommunication |
※ TripCntLength, ResetCntLength는 앞서 본 Sync Message의 값과 동일함
그럼 이제 하나의 예제를 살펴 보면서 Fv의 각 요소 요소를 이해해 보도록 하겠습니다.
우선 첫번째로 Construct Fv 입니다.
![]() |
Autosar에서는 다음과 같은 Table을 제공하고 있습니다.
![]() 출처 : AUTOSAR_SWS_SecureOnboardCommunication |
자 우선 "Trip Counter | Reset Counter"는 OR의 의미가 아닙니다.
(별거 아닌거 같지만, 처음에 이부분을 OR로 이해하는 타 Suppiler와 이야기 하는데 상당히 애를 먹었던 기억이 납니다.)

이 의미는 Trip Counter와 Reset Counter를 모두 비교하라는 의미 입니다.
즉 해당 Box는 다음과 같이 해석이 됩니다.
- Latest Fv의 Trip Counter와 Previous Fv의 Trip Counter를 비교
- Latest Fv의 Reset Counter와 Previous Fv의 Reset Counter를 비교
왜 이렇게 비교를 하게 했을까요?

앞서 설명드린 Sync Message를 통해서 받는 Latest Fv는
"Trip Counter는 새로운 IGN Cycle마다 1씩 증가하고, Reset Counter는 Sync Message가 송출될때마다 증가 한다"
기억하고 계신가요?
그.렇.다.면!
아직 새로운 Latest를 받지 않은 경우, Trip Counter / Reset Counter가 Previous와 동일 하고,
그럼 새로운 Latest를 받은 경우, Reset Counter가 증가된 값을 받게 되니, Previous값과 다르게 됩니다.
그럼 이 Box는 다시 다음과 같이 해석이 가능 합니다.
- 아직 새로운 Sync Message(Latest Fv)를 받지 못한 경우
- 새로운 Sync Message(Latest Fv)를 받은 경우
자 그럼 아래 내용을 다시 다음과 같이 해석 할수 있습니다.
1) 아직 새로운 Sync Message를 받지 못한 경우, Previous Fv에서 Message Counter를 1증가 시키고, Contrcut Fv에 저장해라.
2) 새로운 Sync Message를 받은 경우, Sync에서 받은 Latest Trip Counter와 Reset Counter값을 가지고 저장하고,
Message Counter는 초기화 한 이후 1 더해서 저장해라.
Reset Flg는 새로운 Reset Counter값에서 하위값만 저장해라.
자 이렇게 Construct Fv가 만들어 졌습니다.
그리고, 이렇게 만들어진 Construct Fv는 Secure Message가 전송될때 포함될 C-MAC을 생성하는 원료로 쓰입니다.
C-MAC이 생성되고, Secure Message에 해당 C-MAC을 추가하여 Sender가 송출 되고 나면,
이제 Construct Fv값을 Previous Fv에 저장 하면 됩니다.
![]() |
Autosar Spec에서는 이부분을 다음과 같이 설명하고 있습니다.
![]() |
오늘은 Sender 입장에서의 Freshness Value에 대해 알아 보았습니다.
이제 다음을 어떤 순서로 풀어 나가야 쉽게 접근될지 나름 고심 중 입니다.

우선 제가 생각하고 있는 절차는 다음과 같습니다.
1) 송신측 : 열심히 만든 Freshness Value를 통해 Secure Message를 송신하는 과정(Truncated Fv의 등장)
2) 수신측 : 수신 받은 Secure Message의 Recv Fv(Truncated Fv) 설명
3) 수신측 : Construct Fv, Previous Fv 설명 및 전체 수신 과정 설명
그럼 다음 posting에서 다시 뵙겠습니다.
감사합니다.
'CyberSecurity > SecureOnCAN' 카테고리의 다른 글
6. Recv Secure Message (1) | 2023.12.17 |
---|---|
5. Send Secure Message (0) | 2023.12.15 |
3. Sync Message (1) | 2023.12.07 |
2. SecOC의 등장 인물 (1) | 2023.12.03 |
1. Secure On CAN 개요 (1) | 2023.11.29 |