본문으로 바로가기

Secure Flash

임베디드 장치 및 ECU 에 SW를 저장하는 과정

예) Application SW, Calibration Data, Parameter 등

Flash의 일반적인 프로세스

- 진단 도구를 이용한 Flash

진단 기술자가 진단 도구를 사용하여 ECU에 SW 로드

(ECU의 부트로더를 통해 로드됨)

 

- UDS Session

ECU와 진단 도구 간에 통신 채널을 열고 보안 액세스를 설정한 후 SW 로드

(바이너리 형태로 ECU에 로드됨)

 

Secure Flash 작동 원리

1) 사용자 인증
진단 도구는 OEM 서버를 통해 인증
-> 현재 조직에서 제조업체와 협력하고 있을 수 있음. 만약 조직에서 나가거나 협력 관계가 만료될 경우 더 이상 자격 증명을 할 수 없음
사용자는 OEM 서버에 로그인하여 자신의 자격 증명을 확인, Falsh 수행 가능


2) 소프트웨어 무결성 검증
Flash하려는 소프트웨어는 SHA-256 같은 해시 알고리즘을 사용하여 해시값으로 변환
이 해시값은 디지털 서명 형태로 ECU에 전달


3) ECU에서의 검증
ECU는 수신된 소프트웨어와 디지털 서명 검증
ECU는 자체 보안 영역(SHE, HSM)을 사용하여 소프트웨어의 무결성 확인
디지털 서명이 일치하면 소프트웨어가 로드되고, 그렇지 않으면 소프트웨어 로드를 차단


Secure JTAG

- JTAG는 Joint Test Action Group의 약자로, 제조 후 PCB(Printed Circuit Board) 설계를 검증하기 위한 산업 표준

- 주로 임베디드 시스템에서 디버깅프로그램 접근을 위해 사용되며, CPU 리셋 직후 첫 번째 명령어부터 접근 가능

 

자동차 산업에서의 역할을 크게 살펴보면,

- ECU(전자제어장치) 디버깅
- 소프트웨어 업데이트 및 프로그래밍
- 문제 해결 및 시스템 검증

 

-> JTAG 포트는 물리적 접근을 통한 공격 가능성이 있으므로 Secure JTAG이 필요

Secure JTAG 동작 원리

1) 비밀번호 설정
소프트웨어 개발 후, 256비트 또는 512비트 비밀번호가 생성
이 비밀번호는 ECU의 플래시 메모리 내 Secure Area 에 저장

 

2) 비밀번호를 통한 인증
JTAG 포트를 사용하려면 비밀번호를 입력해 JTAG를 잠금 해제

비인가 사용자: 비밀번호를 모르면 JTAG 접근이 차단
인가 사용자: 비밀번호를 알고 있는 경우 JTAG를 잠금 해제하여 ECU 소프트웨어를 업데이트하거나 디버깅

 

-> Secure JTAG로 SW가 비인가된 외부 사용자에게 노출되는 것을 막을 수 있고, 이를 통해 SW 위변조를 방지할 수 있음!


Secure Log

ECU의 보안 기능 실행 내역을 기록

방어 성공/실패 기록을 모두 기록

여기서 의문점 : 방어 성공한 내용은 왜 기록하는 것일까?

공격자가 시스템 무력화를 시도했던 기록 자체만으로도 이후 보안성 분석에 도움이됨

(공격자의 행동 패턴을 분석할 수도 있고, 시스템 자산의 잠재 위험을 알 수 있을듯)

 

Secure Log 에 기록되는 것들

1) Secure Flash
성공적인 서명 검증 / 실패한 서명 검증
실패한 서명 검증은 더 높은 우선순위를 가지며, 반드시 저장


2) Secure Communication
통신 실패 또는 인증 실패
OEM이 설정한 기준에 따른 정보 불일치


3) Secure Access
성공적인 인증 시도 / 실패한 인증 시도


4) Secure Boot
부팅 과정에서 성공 / 실패한 검증 내역

실패 내역은 더 높은 우선순위

 

로그 버퍼 관리

- Temp Buffer : 실패한 이벤트를 우선적으로 저장. 메모리 제한이 있는 경우 이전 로그는 삭제되고 새 로그가 저장

- Parmanent Buffer : 중요한 실패 이벤트는 영구적으로 저장. 이는 OEM의 설정에 따라 주기적으로 업데이트

반응형