11종 리딩펜 SKU에 적용되는 AES-XTS 플래시 암호화, ECDSA-P256 이미지 검증 및 롤백 방지 카운터. BOM 비용, 공장 테스트 및 OTA 서명 절차까지 안내합니다.

게시일: 2월 24, 2021 - 89 조회수

리딩펜 펌웨어 암호화 및 시큐어 부트: AES-XTS, ECDSA 이미지 서명 및 롤백 방지

Reading pen secure electronics factory testing

리딩펜 펌웨어 암호화 및 시큐어 부팅: AES-XTS, ECDSA 이미지 서명 및 롤백 방지

대상 독자: 본 문서는 어린이용 리딩펜에 출하되는 펌웨어의 무결성을 보장해야 하는 OEM 펌웨어 설계자, 보안 컴플라이언스 담당자 및 수입업체를 위해 작성되었습니다. 모든 활성 SKU(B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2, Y6)의 시큐어 부팅 흐름, 플래시 암호화 모드 및 OTA 이미지 서명 파이프라인을 구체적인 BOM 비용 수치와 함께 정리합니다.

2025년 4분기, 브라질의 한 지역 유통사가 경쟁사가 F8 펌웨어를 복제해 OID 콘텐츠 레이어를 리브랜딩한 뒤, 자사 도매가 $8.60 대비 $5.20에 호환 카피 제품을 판매하고 있다고 보고했습니다. 복제된 펌웨어는 시큐어 부팅이 비활성화된 개발 상태에서 덤프된 것이었습니다. 두 가지 문제가 있었습니다. 개발 상태가 OTP 퓨즈를 blow하지 않은 채 출하되었고, 양산 펌웨어에 이미지 단위 서명이 없었던 것입니다.

F8, K7, KF1, L5, Q6, Q8, T2, Y6에 필수 시큐어 부팅을 적용하고, OTP에 이미지 단위 ECDSA-P256 서명 및 모노토닉 카운터를 통한 롤백 방지를 추가한 펌웨어 3.1.2를 출하한 뒤, 복제 사업은 사라졌습니다. 한 분기 내에 해당 유통사의 도매 마진을 회복했습니다.

본 문서는 펜에서 실제로 무엇이 동작하는지, 비용은 얼마인지, 수입업체가 계약에서 반드시 확인해야 할 항목이 무엇인지 정리한 엔지니어링 레퍼런스입니다.

1. 리딩펜에서 시큐어 부팅이 실제로 하는 역할

시큐어 부팅은 ROM에서 애플리케이션까지 이어지는 신뢰 체인(chain of trust)입니다. 펜의 마스크 ROM에는 변경 불가한 공개키(루트 키)가 내장되어 있습니다. 모든 부팅 단계에서 로더는 다음 단계의 서명을 검증한 뒤 점프합니다.

Q8(BK7252 + 외장 SPI 플래시) 기준 체인은 다음과 같습니다.

  1. ROM 부트로더 — 마스크 ROM에서 실행. 루트 공개키(P-256, 하드코딩)를 사용해 Stage-1(BL2) 서명을 검증.
  2. BL2 — 32KB, 암호화된 플래시 파티션에 위치. BL31(EL3 런타임) 서명을 검증.
  3. BL31 — TF-A 스타일의 보안 런타임. TrustZone을 설정하고 OP-TEE 이미지를 검증.
  4. OP-TEE— 트러스티드 실행 환경입니다. AES-XTS 플래시 암호화 키와 단조 카운터(monotonic counter)를 보관합니다.
  5. Linux/RTOS — 실행 전에 검증.
  6. 애플리케이션 — RTOS 로더에 의해 검증.

각 서명은 SHA-256 기반 ECDSA-P256 방식입니다. 루트 공개키는 64바이트이며, 웨이퍼 테스트 단계에서 OTP에 burn-in 됩니다. 루트 키를 덮어쓸 수는 없으며, OTP 퓨즈는 비가역적입니다.

Chain of Trust on Q8 / T2

2. SKU별 시큐어 부팅 적용 현황

모델 ROM 루트 키 OTP Fuse BL2 검증 플래시 암호화 롤백 방지 카운터 탬퍼 디텍트 핀
B1 없음 아니오 아니오 없음 아니오 아니오
B2 없음 아니오 아니오 없음 아니오 아니오
F8 P-256 예 예(fw 3.1.2 이상) AES-XTS-128 24비트 OTP 아니오
K7 P-256 예 예(fw 1.9.5 이상) AES-XTS-128 24비트 OTP 아니오
KF1 P-256 예 예 (펌웨어 1.9.5 이상) AES-XTS-128 24비트 OTP 예
L5 P-256 예 예 (펌웨어 4.2.0 이상) AES-XTS-256 32비트 OTP 예
P2 없음 아니요 아니요 없음 아니요 아니요
Q6 P-256 예 예 (펌웨어 3.3.1 이상) AES-XTS-128 24비트 OTP 아니요
Q8 P-256 예 예 AES-XTS-256 32비트 OTP 예
T2 P-256 예 예 AES-XTS-256 32비트 OTP 예
Y6 P-256 예 예 (펌웨어 2.6.4 이상) AES-XTS-128 24비트 OTP 예

세 가지 관찰 사항:

  1. B1, B2, P2는 secure boot을 지원하지 않습니다. 이 세 모델은 레거시 원가 절감 라인입니다. 개인 데이터를 다루는 모든 배포 환경에는 적합하지 않습니다.
  2. KF1과 Q6은 128비트 플래시 암호화이며 256비트가 아닙니다. 저장 시 보호에서 그 차이는 미미하며, 두 AES-XTS 모드 모두 NIST SP 800-38E를 통과합니다.
  3. L5, Q8, T2는 tamper detect 핀을 제공합니다 외함이 열리면 플래시 암호화 키를 즉시 삭제합니다. 이는 BK7252 / RTL8723DS 실리콘 리비전 C 이상의 하드웨어 기능입니다.

바이어 팁:고객이 독일 주 교육부이든 캘리포니아 공립학교 지구이든, B1, B2, F8(3.1.2 이전), K7(1.9.5 이전), L5(4.2.0 이전), P2, Q6(3.3.1 이전), Y6(2.6.4 이전) 또는 보안 부팅이 적용되지 않은 기타 빌드는 출하가 불가능합니다. 2025년 3월 이후 모든 주문의 기본 펌웨어에는 보안 부팅이 활성화되어 있습니다.

3. AES-XTS 플래시 암호화: 동작 원리

AES-XTS는 디스크/플래시 암호화를 위한 NIST 승인 모드(SP 800-38E)입니다. 두 개의 AES 키를 사용합니다. 블록 암호용 Key1과 트윅(tweak)용 Key2가 그것이며, 트윅은 섹터 번호를 0x...0100과 XOR한 값입니다.

리딩 펜의 플래시 레이아웃은 다음과 같습니다.

  • 부트 섹터(16 KB) — 암호화되지 않음, ROM 포인터 포함
  • BL2(32 KB) — 키 K1 + 트윅 1로 암호화
  • 애플리케이션 A(4 MB) — K1 + 트윅 2로 암호화
  • 애플리케이션 B(4 MB) — K1 + 트윅 3로 암호화(OTA 스왑용)
  • 데이터 파티션(8 MB) — K1 + 트윅 4로 암호화(OID 도서, 녹음)
  • NVRAM (256 KB) — K1 + tweak 5로 암호화

키는 첫 부팅 시 BL2 부트로더가 BK7252 하드웨어 RNG를 사용해 생성한 뒤 OP-TEE 보안 저장소로 래핑되어 전용 eFuse 행에 저장됩니다. 플래시 어디에도 평문 키는 존재하지 않습니다. 래퍼 키는 OP-TEE의 보안 세계에 보관되며 리치 세계는 이를 절대 볼 수 없습니다.

ATECC608B가 적용된 Q8 및 T2의 경우, 래퍼 키는 보안 요소에 보관되어 소프트웨어로 절대 읽을 수 없습니다. MCU에 대한 부채널 공격으로도 키를 추출할 수 없습니다.

4. 이미지별 ECDSA 서명

모든 OTA 펌웨어 이미지는 빌드 시점에 서명됩니다. 공장 CI에서 다음을 실행합니다.

sign-image --key factory-ecdsa-p256.pem \
           --in build/q8-fw-3.3.1.bin \
           --out build/q8-fw-3.3.1-signed.bin \
           --manifest manifest.json \
           --counter 184

매니페스트에는 다음 내용이 포함됩니다.

  • image_sha256: 비압축 이미지의 32바이트 해시.
  • signature: 매니페스트 헤더의 64바이트 ECDSA-P256 서명.
  • counter: 32비트 모노토닉 카운터 값(현재 OTP 카운터 이상이어야 함).
  • rollback_disabled: bool.

펜의 BL31 로더는 OTP의 공개 키로 서명을 검증합니다. 서명이 유효하지 않으면 이미지는 거부됩니다. 카운터가 현재 OTP 카운터보다 낮으면 이미지는 거부됩니다(롤백 방지). 카운터가 현재 OTP 카운터보다 12비트 이상 크면 이미지는 거부됩니다(리플레이 윈도우 보호).

공장의 서명 키는 YubiHSM2 하드웨어 모듈에 보관됩니다. 빌드 엔지니어와 규정 준수 책임자만 접근할 수 있으며, 키는 HSM 밖으로 나가지 않습니다.

5. OTP의 롤백 방지 카운터

롤백 방지 카운터는 OTP에 저장된 24비트(L5/Q8/T2에서는 32비트) 모노토닉 값입니다. 펌웨어 업데이트가 성공할 때마다 카운터가 증가합니다. 펜은 카운터가 현재 OTP 값보다 작거나 같은 이미지의 설치를 거부합니다.

OTP 프로그래밍은 실리콘 벤더의 원타임 프로그래머블 퓨즈 어레이를 사용합니다. BK7252는 8 KB의 OTP를 제공하며, 우리는 다음과 같이 할당합니다.

  • 루트 공개 키(P-256)용 64 B.
  • OEM 공개 키 해시용 32 B.
  • 32비트 카운터용 4 B.
  • 24비트 카운터용 4 B(L5/Q6/Q8/T2/Y6 대체).
  • 고유 기기 시리얼용 32 B.
  • ATECC608B(Q8/T2) 프로비저닝용 32 B.
  • OEM 데이터용 여유 7,832 B(예: 보정 상수, 브랜딩 비트).

OTP 프로그래밍은 되돌릴 수 없습니다. 잘못 프로그래밍된 카운터는 현장에서 수정할 수 없으며, 펜을 공장으로 반품해야 합니다.

6. OTA 업데이트 절차(보안 경로)

Q8/T2 펌웨어 3.3.1의 OTA 절차는 다음과 같습니다.

  1. 클라우드가 MQTT QoS 2로 OTA 명령 게시(참조: TC-044).
  2. 펜이 OTA 다운로드 서버에 TLS 1.3 세션을 엽니다.
  3. 펜이 암호화된 이미지를 64 KB 청크 단위로 다운로드합니다.
  4. 펜이 각 청크의 SHA-256을 매니페스트와 대조하여 검증합니다.
  5. 펜이 매니페스트 서명을 OTP에 저장된 공개 키로 검증합니다.
  6. 펜이 롤백 방지 카운터를 확인합니다(이미지 카운터 ≥ OTP 카운터).
  7. 펜이 비활성 파티션(애플리케이션 B)에 이미지를 기록합니다.
  8. 펜이 재부팅하고, BL2가 새 이미지를 감지하여 서명을 검증합니다.
  9. 펜이 새 이미지로 부팅되며, 성공 시 OTP 카운터를 1 증가시킵니다.
  10. 펜이 클라우드에 OTA ack를 게시합니다.

어떤 단계든 실패하면 펜은 애플리케이션 A에 머물며 실패를 클라우드에 보고합니다. 대체 경로는 재시도이며, 재시도도 실패하면 펜이 잠겨 공장 초기 상태로 돌아갑니다.

1 Mbps 학교 Wi-Fi에서 8 MB 서명·암호화 이미지의 평균 OTA 시간: 75 s. 이 중 애플리케이션 B의 ECDSA 검증에 180 ms, AES-XTS 복호화에 4.6 s, 플래시 쓰기에 32 s가 소요됩니다.

7. 클로너가 할 수 없는 것

보안 부팅이 활성화된 상태에서 클로너는 다음과 같은 벽에 부딪힙니다.

  • 플래시를 덤프하여 펌웨어를 리버스 엔지니어링할 수 없습니다(AES-XTS-256).
  • 변조된 이미지를 다시 플래시할 수 없습니다(이미지별 ECDSA 서명).
  • 취약한 버전으로 펌웨어를 다운그레이드할 수 없습니다(롤백 방지 카운터).
  • 보안 요소에서 개인 키를 추출할 수 없습니다(Q8/T2만 해당 — ATECC608B는 변조 방지 설계).

여전히 가능한 것은 정품 펜을 구매해 분해하고 OID 콘텐츠를 복사하는 것입니다. 이는 콘텐츠 암호화를 통해 완화되며(OID 도서는 펜별 키로 AES-CBC 암호화됨; 참조: TC-035 데이터 암호화).

8. 보안 부팅을 위한 공장 현장 절차

각 필기기는 ICT에서 다음과 같은 보안 부트 프로그래밍을 거칩니다.

  1. OTP 퓨즈 소각 — 실리콘 벤더의 보안 프로그래밍 도구로 루트 공개 키를 기록합니다. 1회용.
  2. 플래시 암호화 키 생성 — 첫 부팅 시 BL2가 생성합니다.
  3. 탬퍼 감지 보정 — KF1/L5/Q8/T2/Y6: 인클로저 열림 스위치를 테스트합니다.
  4. 서명 자가 테스트 — 필기기가 알려진 서명된 테스트 이미지를 검증하며, 서명 검증에 실패하면 해당 필기기는 거부됩니다.
  5. 안티 롤백 테스트 — 필기기는 카운터가 감소된 테스트 이미지의 설치를 거부합니다.
  6. 보안 부트 실패 로그 — 추적 관리를 위해 OTP에 기록됩니다.

공장은 6개 단계 중 어느 하나에서라도 불량률이 0.3% 이하인 로트를 합격으로 수락합니다. Q8 및 T2의 실제 현장 불량률은 출하 47,000대 이상 기준 0.04%, 주로 ICT 단계에서 포착되는 OTP 프로그래밍 오류에 의해 발생합니다.

9. 보안 부팅의 BOM 원가

Q8 또는 T2에서 보안 부팅을 활성화하기 위한 단위당 BOM 차이는 다음과 같습니다.

부품 비용 비고
ATECC608B 보안 소자 $0.62 선택 사항이며 일부 규정 준수 체계에서는 필수
8 KB OTP (BK7252 내장) $0.00 실리콘에 포함
보안 부팅 BL2 (32 KB) $0.04 플래시 비용이며 NRE 없음
OP-TEE 이미지 (256 KB) $0.18 플래시 비용, NRE 없음
YubiHSM2 팩토리 서명 상각됨 일회성 $650 유닛 + 이미지당 $0.0008
비보안 SKU 대비 총 BOM 차액 $0.84 ATECC608B 미포함 기준; 포함 시 $1.46

5,000개 MOQ 기준 BOM 차액은 약 3개월 내 클로닝 관련 보증 비용 절감으로 회수됩니다. 전체 ROI 계산은 당사 자료에 있습니다. [Compliance ROI Calculator].

11. 현장 복구 및 보안 부트 벽

보안 부트 실패는 완전 벽돌 상태입니다. 펜이 부팅을 거부하고 LCD에 오류 코드를 표시합니다(예: E_SEC_BOOT_FAIL = 0xE0, E_ROLLBACK = 0xE1). 현장 복구를 위해서는 BL2 검증을 우회할 수 있는 공장 프로그래밍 지그가 필요합니다. 당사의 대리점 전용 복구 절차는 다음과 같습니다:

  1. 대리점이 외함을 분해합니다(KF1, L5, Q8, T2, Y6 — 탬퍼 감지 핀은 공장 키에 의해 승인되어야 함).
  2. 대리점이 PCB의 테스트 패드에 JTAG 프로브를 연결합니다.
  3. 대리점이 1회 부팅 사이클 동안 미서명 이미지를 허용하는 임시 부트로더를 플래시합니다.
  4. 대리점이 알려진 서명 이미지를 재설치합니다.
  5. 대리점이 공장 전용 명령을 통해 OTP 카운터를 공장 초기 상태로 재설정합니다.

복구 절차 비용은 펜당 대리점 인건비 약 $15와 6시간의 벤치 타임입니다. 보안 부트 실패 펜은 부모 또는 교사가 현장에서 복구할 수 없습니다. 당사는 모든 복구 이벤트를 기록하고 펜당 $35 수수료를 대리점에 청구하여 근본 원인 분석 비용을 충당합니다. ## 12. CVE 대응 및 공동 공개

당사 공장은 [email protected] 에서 공동 공개 프로그램을 운영합니다. PGP 키 지문은 당사 웹사이트에 게시되어 있습니다. 2023년 이후 14건의 취약성 보고를 처리했으며, 모두 공개 후 90일 이내, 그중 8건은 30일 이내에 해결했습니다. 14건 모두 최종 사용자에게 출하된 프로덕션 빌드에 영향을 미치지 않았습니다. 이는 안티롤백 + 보안 부트 체인이 모든 익스플로잇 시도를 차단했기 때문입니다.

2025년에 처리된 주요 CVE:

  • SRP-2025-002 — F8 3.1.0의 OID 파서 버퍼 오버플로(3.1.2에서 수정; 심각도 7.2).
  • SRP-2025-007 — K7 1.9.4의 BLE 페어링 다운그레이드(1.9.5에서 수정; 심각도 6.8).
  • SRP-2025-011 — Q8 3.3.0의 TLS 1.3 0-RTT 리플레이(부모 통제용 0-RTT 비활성화로 3.3.1에서 수정; 심각도 5.4).

현재 이 공장은 버그 바운티를 제공하지 않지만, 신고자의 동의하에 펌웨어 릴리스 노트에 크레딧을 기재하고 핸들(닉네임)을 각인한 T2 생산 제품을 발송합니다. 수입업체는 NDA 하에 security.txt 및 보안 취약점 공개 정책을 요청할 수 있으며, 처리 기간은 영업일 기준 2일입니다.

사용 사례 권장 SKU 참고 사항
EU / GDPR / 독일 학교 Q8, T2 (ATECC608B 탑재) 개인정보 처리 시 필수
캘리포니아 학교 (CCPA) Q8, T2 보안 요소 선택 사항
도매가 $15 미만, 개인정보 미수집 K7, KF1, Y6 시큐어 부트 활성화, 보안 요소 미사용
브라질 LGPD Q8, T2, L5 2025년부터 시큐어 부트 의무화
중국 PIPL SM2 래핑 적용된 Q8, T2 요청 시 맞춤형 CA 제공 가능
장난감 전용, 클라우드 미사용 F8, Q6 시큐어 부트 활성화, 개인정보 미수집

Secure Boot Coverage Matrix



관련 글


견적 요청 — 공장으로부터 빠른 회신 받기

Frequently Asked Questions

어떤 리딩펜 SKU에 보안 부팅이 활성화되어 있나요?
F8(펌웨어 3.1.2 이상), K7 / KF1(1.9.5 이상), L5(4.2.0 이상), Q6(3.3.1 이상), Q8, T2, Y6(2.6.4 이상)는 모두 ECDSA-P256 검증 보안 부팅을 지원합니다. B1, B2, P2는 지원하지 않습니다. 2025년 3월 이후 기본 출하 펌웨어는 지원 모델 전체에 보안 부팅이 활성화되어 있습니다.
어떤 플래시 암호화 알고리즘을 사용하나요?
NIST SP 800-38E에 따라 AES-XTS를 사용합니다. K7, KF1, F8, Q6, Y6은 첫 부팅 시 펜 단위로 생성되는 키와 함께 AES-XTS-128을 사용합니다. L5, Q8, T2는 AES-XTS-256을 사용하며 키는 OP-TEE로 래핑되고, Q8/T2에서는 추가로 옵션인 ATECC608B 보안 요소에도 보관됩니다.
펌웨어 롤백은 어떻게 방지되나요?
각 OTA 이미지에는 모노토닉 카운터가 포함되어 있습니다. 펜은 현재 카운터를 OTP에 저장하고, 카운터 값이 OTP 값보다 작거나 같은 이미지는 거부합니다. 카운터 폭은 K7/KF1/F8/Q6/Y6에서 24비트, L5/Q8/T2에서 32비트입니다. 카운터는 새 이미지의 부팅이 성공한 이후에만 증가합니다.
보안 부팅 활성화에 대한 BOM 비용은 얼마인가요?
보안 부팅 자체는 개당 $0.22(BL2 + OP-TEE 플래시)의 비용이 듭니다. ATECC608B 보안 요소를 추가하면 추가로 $0.62의 비용이 발생합니다. YubiHSM2 공장 서명 HSM은 일회성 비용 $650입니다. 보안 요소 미포함 시 개당 델타는 $0.84, 포함 시 $1.46입니다.
클로너가 Q8 또는 T2에서 펌웨어를 추출할 수 있나요?
불가능합니다. 플래시는 AES-XTS-256으로 암호화되며 키는 OP-TEE로 래핑되어 있고, 옵션인 ATECC608B가 래퍼 키를 보관합니다. 플래시 덤프는 암호문만 산출합니다. 변조된 펌웨어 이미지는 ECDSA-P256 서명 검증에서 실패합니다. 다운그레이드 이미지는 안티롤백 카운터 검증에서 실패합니다.
장바구니
이 사이트에서 쿠키를 허용하시면 더 나은 경험을 하실 수 있습니다. 쿠키 정책
Chat on WhatsApp