Secure Boot 가 왜 필요할까?
시큐어 부트란?
시큐어 부트는 장치의 플래시 메모리에 저장된 부트로더나 펌웨어가 부팅 시점에서 검증되는 메커니즘
코드가 신뢰할 수 있고 변조되지 않았음을 확인해야 운영 체제나 애플리케이션 소프트웨어를 로드할 수 있음
시큐어 부트의 주요 기능
신뢰성 검증: 부트 코드가 신뢰할 수 있는 출처에서 왔는지 확인
무결성 검증: 부트 코드가 변조되거나 수정되지 않았는지 확인
단계적 검증: 부팅의 각 단계가 다음 단계를 실행하기 전에 안전성을 검증
-> 부팅 단계에서 악성 코드가 실행되거나, 재부팅공격 및 펌웨어 변조, DoS 등의 시스템 위협을 사전에 차단
부팅 단계의 위협
악성 펌웨어 삽입
공격자가 정상 펌웨어를 악성 코드로 교체하여 부팅 과정 중 장치를 제어
부트로더 변조
부트로더를 수정하여 보안 검사를 우회
시스템이 정상적으로 부팅되더라도 이후의 단계에서 공격에 취약
DoS 공격
부트로더를 손상시켜 장치가 부팅되지 않도록 방해하여 장치가 작동 불능 상태에 빠지게 함
악성 소프트웨어 삽입
애플리케이션 레벨 대신 부팅 단계에서 특정 플랫폼을 목표로 악성 코드를 삽입
시큐어 부트의 작동 원리
부팅 검증 프로세스
전원이 켜지거나 리셋되면 장치는 부팅 과정을 시작
부팅 단계에서 부트로더 또는 펌웨어가 신뢰할 수 있는 코드인지 검증
검증이 완료되면 다음 단계로 진행하여 운영 체제 또는 애플리케이션 소프트웨어를 로드
디지털 서명 검증
부트 코드에 디지털 서명을 포함하여 코드가 변조되지 않았음을 확인
장치 내 저장된 신뢰할 수 있는 키를 사용하여 서명을 검증
단계별 검증
각 부팅 단계에서 다음 단계의 코드가 안전한지 확인
부트로더가 펌웨어를, 펌웨어가 운영 체제를 검증하는 구조
문제 상황 처리
부트 단계에서 검증에 실패할 경우 장치는 부팅 중단
디버깅 또는 복구 모드로 전환하거나 시스템 관리자에게 경고를 보냄
대칭 알고리즘 Secure Boot - SHE 기반
1. 초기 설정
개발 단계에서 부트로더 코드, Secure Area, 애플리케이션 코드를 서로 독립된 파일과 메모리 파티션으로 매핑
2. 키 관리
SHE 플랫폼은 두 가지 키를 사용
- MAC 키 : MAC 생성용
- Master Key : 주요 키를 보호
3. 부트 MAC 생성 및 저장
부트로더 코드의 MAC이 계산되고, 이 값은 Secure Area 에 저장
Secure Area 은 외부 접근이 불가능하며, 수정하려면 인증 과정 필요
4. 부팅 과정 검증
ECU 리셋 또는 전원 켜짐 시, 부팅 과정이 시작
SHE 플랫폼은 부트로더 코드의 새로운 부트 MAC을 계산
새로 계산된 부트 MAC은 Secure Area 에 저장된 기존 부트 MAC과 비교
-> 두 MAC 값이 일치하면, 부트로더는 애플리케이션 실행 허용
-> 불일치하면, 애플리케이션 실행이 차단되고 하드웨어 보호 (부트로더 코드가 위변조 되었다고 판단)
올바른 부트로더 코드가 플래시되지 않는 한, ECU는 실행되지 않음
비대칭 알고리즘 Secure Boot - HSM 기반
소프트웨어 서명 생성
송신자는 부트로더 또는 특정 소프트웨어 파일(예: 소프트웨어 A, B)을 개인 키로 서명
서명 파일과 소프트웨어 파일을 함께 제공
HSM에서 서명 검증
하드웨어에 소프트웨어가 플래시될 때, HSM이 디지털 서명 검증 수행
PKI 서버로부터 받은 공개 키를 사용하여 서명을 해독하여 해시 값 복원
소프트웨어 검증
HSM은 소프트웨어 파일에서 새로 해시를 계산
복원된 해시와 새로 계산된 해시를 비교
-> 일치 시: 부팅 및 애플리케이션 실행 허용
-> 불일치 시: 무결성 확인 불가 → 실행 중단 → 부트 단계에서 악성 코드 삽입 및 위변조 방지
여기서 의문점 : 그럼 왜 SW 전체가 아닌 해시값을 사용할까?
소프트웨어 파일 전체를 서명으로 변환하면 파일 크기가 크고 처리 속도가 느려짐
예: 1MB 파일 → 서명 시 1MB 이상 필요
반면, 해시 값은 256비트(36바이트)로 크기가 작아 처리 및 전송 효율이 높음
해시함수는 고정 값 반환이니까 파일이 아무리 커도 상관 X
Sequential Mode vs. Parallel Mode
비대칭 구조인 Secure Boot 에는 두 가지 모드가 있는데, 이름에서 알 수 있듯이
Sequential -> 순차적으로 차근차근
Parallel -> 동시에 병렬적으로
이렇게 검증 및 실행 프로세스에서 차이가 있는데,
Sequential (차근차근) 모드는 이전 단계의 검증이 완료되어야 다음 검증이 실행되는 방식, 이전단계에서 검증 실패하면 즉시 부트 프로세스 중단
-> 단계별 철저한 검증 -> 보안성은 높지만 각 단계를 끝까지 기다려야 하므로 시간이 더 걸림
Parrallel (병렬로 동시에) 모드는 SW A의 검증되는 동안에 SW B가 병렬적으로 검증되는데, 당연히 한번에 하니까 부팅 시간이 빨라짐 -> 사용자 경험은 좋지만, 보안성은 떨어질 수 있음
장단점이 명확하니 둘 중 하나로 몰아서 하지 말고 개발 단계에서 혼합해서 구성 가능!
매우 중요한 부트로더, 보안에 민감한 Application -> Sequential (차근차근)
덜 중요한 기능 -> Parrallel (병렬로 동시에)
사용자 경험도 살리면서 치명적인 위협을 막을 수 있지 않을까?
표로 한번에 정리하면..
특징
|
Sequential 모드
|
Parallel 모드
|
보안성
|
매우 높음
|
낮음
|
부트 시간
|
오래 걸림
|
빠름
|
중단 처리
|
검증 실패 시 즉시 중단
|
실패 파일 검출이 늦을 수 있음
|
적용 분야
|
중요 파일 및 보안 민감한 프로세스
|
중요도가 낮은 프로세스
|
'ComputerScience & Embedded > Automotive & Cybersecurity' 카테고리의 다른 글
Secure Flash, Secure JTAG, Secure Log (0) | 2025.03.01 |
---|---|
SecOC : 카운터 동작, MAC 검증 시나리오 (0) | 2025.03.01 |
SecOC (Secure on board communication) (0) | 2025.03.01 |
자동차의 계층적 보안 구조 (0) | 2025.02.27 |
AUTOSAR Crypto stack (Sec OC, CSM, CRY, CRYIF) (0) | 2025.02.27 |