아무나 펌웨어를 덮어쓰지 못하게 막는 관문이다.
절차
진단기 ──27 01──► "seed 주세요"
◄──67 01 A3 5F 21── ECU가 난수 seed 를 준다
진단기 ──27 02 <key>──► 약속된 알고리즘으로 계산한 key
◄──67 02── 일치하면 잠금 해제
홀수 하위기능은 seed 요청, 짝수는 key 전송이라는 규칙을 쓴다.
무엇을 막고 무엇은 못 막나
- 막는 것 — 규격을 모르는 도구의 임의 플래시, 실수로 인한 접근
- 못 막는 것 — 알고리즘과 상수가 유출되면 그대로 뚫린다. 대칭키를 양쪽에 심어 두는 구조라 근본적으로 비밀 유지에 의존한다
그래서 전통적인 seed/key는 보안이라기보다 정품 진단기 확인에 가깝다.
실패에 대한 방어
무차별 대입을 막기 위해 두 가지를 함께 쓴다.
0x36 exceedNumberOfAttempts 허용된 시도 횟수를 넘겼다
0x37 requiredTimeDelayNotExpired 재시도 대기 시간이 아직 안 지났다
전원을 껐다 켜도 지연이 유지되도록 만드는 것이 보통이다.
요즘 흐름
무선 업데이트가 늘면서 인증서·비대칭 서명 기반의 Authentication(0x29) 로 옮겨가고 있다. 펌웨어 자체에 서명을 붙여 부트로더가 검증하는 방식(시큐어 부트)과 함께 쓴다.