앱 슬롯과 otadata가 맡는 일
ESP-IDF v6.1의 안전한 앱 OTA 구성은 최소 두 개의 OTA 앱 슬롯과 otadata를 사용합니다. otadata는 두 플래시 섹터, 총 0x2000바이트입니다. 현재 실행 중인 앱을 덮는 대신 비활성 앱 슬롯에 쓰고, 검증 후 부팅 선택을 바꿉니다.
이 안전성 설명을 모든 파티션 갱신에 일반화하지 않습니다. 부트로더·파티션 테이블·데이터 파티션의 업데이트 방식은 다르며, NVS를 무조건 지우는 절차도 아닙니다. 제품별 전원 차단 시험과 복구 경로는 별도로 검증해야 합니다.
전송 인증과 이미지 신뢰를 구분합니다
esp_https_ota에서는 cert_pem의 루트 인증서나 crt_bundle_attach의 인증서 묶음으로 서버를 검증합니다. 주소 문자열이 https로 시작한다는 것만 확인하고 인증서 검증을 생략해서는 안 됩니다. 평문 HTTP 예시 서버를 HTTPS 배포라고 부르지도 않습니다.
이미지 서명과 신뢰할 수 있는 배포 메타데이터는 별도로 설계합니다. 신뢰하지 않는 manifest에서 받은 해시나 버전 문자열만으로는 그 파일의 작성자를 인증할 수 없습니다. esp_https_ota가 ESP_OK를 반환해도 새 앱의 첫 부팅 자가진단까지 통과했다는 뜻은 아닙니다.
Rollback을 켠 경우에만 확정 상태를 사용합니다
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE은 기본적으로 꺼져 있습니다. 이 옵션을 켜면 부팅 대상으로 지정한 새 앱은 첫 부팅 때 NEW에서 PENDING_VERIFY로 바뀝니다. 필수 기능의 자가진단에 성공한 앱이 esp_ota_mark_app_valid_cancel_rollback을 호출해 VALID로 확정합니다.
PENDING_VERIFY 상태에서 확정하지 못하고 다시 부팅하면 ABORTED로 처리됩니다. 명시적인 실패 처리에서는 invalid 표시와 재부팅 API를 사용합니다. 되돌아갈 수 있는 부팅 가능 이미지가 실제로 있어야 복구할 수 있으며, 이전 슬롯이 있다고 해서 복구가 성공한다는 보장은 없습니다.
NEW: 다음 부팅 대상으로 선택
PENDING_VERIFY: 새 앱의 첫 실행과 자가진단
성공하면 VALID, 미확정 재부팅이면 ABORTED
Anti-rollback은 복구 후보도 제한합니다
Anti-rollback은 일반적인 제품 버전 문자열과 달리 이미지의 secure_version과 eFuse의 보안 버전을 비교합니다. 칩에 기록된 값보다 낮은 보안 버전은 부팅 후보가 될 수 없습니다. 따라서 더 오래된 슬롯으로 되돌아가는 복구 계획과 보안 버전 갱신 계획을 함께 검토해야 합니다.
여기서는 보드에 이미지를 쓰거나 eFuse를 변경하지 않았습니다. 원고의 코드·절차와 v6.1 문서를 대조한 것이며, 특정 장치에서 전원 차단이나 rollback 시험을 통과했다고 주장하지 않습니다.