콘텐츠로 이동

v0.0

D'CENT X 엔터프라이즈 펌웨어 팀 핸드오프 종합 요약서

1. Executive Summary

본 문서는 D'CENT X 엔터프라이즈 콜드월렛의 펌웨어 개발을 위한 종합 핸드오프 요약서이다. Phase 4(차별화 확장 설계), Phase 5(시스템 아키텍처 설계), Phase 6(펌웨어 요구사항)에서 도출된 모든 펌웨어 요구사항을 하나의 문서로 종합하여, 펌웨어 팀이 구현 범위, 우선순위, 의존성, SE 리소스 버짓, 하드웨어 확인 항목을 한눈에 파악할 수 있게 한다.

핵심 산출물: - 전체 펌웨어 요구사항 64건 (FW-SIGN: 20건, FW-WYSIWYS: 20건, FW-POLICY: 10건, FW-UPDATE: 14건) - SE 앱릿 3개 구조: Signing Applet, WYSIWYS Applet, Policy Applet - SE 리소스 버짓: 저장 ~9.8KB, RAM 피크 ~8.5KB - 하드웨어 팀 확인 필요 항목: 17건 ([HW-CONFIRM]) - 구현 6단계 로드맵 (서명 기본 -> WYSIWYS -> 정책 엔진 -> MuSig2 -> 업데이트 -> 확장)

기대 일정: 펌웨어 팀이 Phase 1(서명 기본) 개발에 착수하기 위해서는, 우선순위 1([HW-CONFIRM] P1) 7건의 하드웨어 사양 확인이 선행되어야 한다.


2. SE 앱릿 구조 종합

2.1. Enterprise Applet Container

D'CENT X SE 내부에 3개의 앱릿이 Enterprise Applet Container 내에서 동작한다.

Enterprise Applet Container
  |
  +-- Signing Applet
  |     - ECDSA (secp256k1) 서명
  |     - Schnorr (BIP-340) 서명
  |     - MuSig2 (BIP-327) 2라운드 프로토콜
  |     - BIP-32 HD 키 파생 (BIP-44/84/86)
  |     - RFC 6979 Nonce 생성
  |     - 서명 카운터 관리
  |
  +-- WYSIWYS Applet
  |     - PSBT (BIP-174/370) 파싱 엔진
  |     - RLP/ABI 디코딩 엔진
  |     - 토큰 매핑 (토큰 DB)
  |     - 함수 셀렉터 DB 조회
  |     - SHA-256 해시 비교 검증 (constant-time)
  |     - 경고 레벨 판정 (NONE/INFO/CAUTION/CRITICAL)
  |     - 디스플레이 렌더링 데이터 생성
  |
  +-- Policy Applet
        - 건당 금액 한도 (uint64 비교)
        - 일일 누적 카운터
        - 서명 Rate Limit (슬라이딩 윈도우)
        - Merkle Root 기반 화이트리스트 검증 (depth 20)
        - 정책 업데이트 서명 검증 (Admin 쿼럼)
        - 쿨다운 타이머

서명 파이프라인 흐름:

SignRequest 수신
    |
    v
[WYSIWYS Applet] -- 트랜잭션 파싱 + 해시 비교 + 화면 표시
    |
    v
[Policy Applet]  -- 금액 한도 + 화이트리스트 + 일일 한도 + Rate Limit
    |
    v
[Signing Applet] -- 키 파생 + 서명 생성 + 카운터 업데이트
    |
    v
SignResponse 반환

2.2. Secure Storage 레이아웃

영역 크기 앱릿 비고
Private Keys (HD derived) ~1,600B Signing 최대 10개 HD 계정 x 160B
토큰 DB 2,048B WYSIWYS 최대 50개 토큰 x 40B
함수 셀렉터 DB 4,096B WYSIWYS 최대 256개 x 16B
정책 규칙 데이터 256B Policy 4개 규칙 설정값 + 카운터
Merkle Root 32B Policy 화이트리스트 Merkle Tree Root
Admin 공개키 세트 512B Policy 최대 8개 Admin 공개키
정책 버전/메타 64B Policy 버전 번호, 쿨다운 상태
정책 검증 임시 영역 256B Policy 정책 업데이트 서명 검증
MuSig2 세션 상태 132B Signing 최대 2세션 x 66B
서명 카운터 4B Signing 전역 단조 증가
WYSIWYS 잠금 카운터 8B WYSIWYS 해시 불일치 연속 카운터
D'CENT 공개키 (펌웨어 서명) 33B System 코드 서명 검증용
예비 마진 (10%) ~930B - 향후 확장
합계 ~9,971B (~9.8KB)

2.3. 앱릿 간 통신 (Internal API)

호출 흐름 요청 데이터 응답 데이터
WYSIWYS -> Policy ParsedTransaction (수신자, 금액, 자산) PolicyResult (PASS/FAIL + 위반 코드)
WYSIWYS -> Signing sighash + derivation_path signature (64-65B)
Policy -> Secure Storage 정책 데이터 읽기/쓰기 정책 값, 카운터
Signing -> Secure Storage 키 파생 경로 파생된 개인키 (임시)

3. 전체 펌웨어 요구사항 마스터 목록

3.1. 요구사항 카테고리 요약

카테고리 ID 범위 건수 출처 Phase 출처 문서
FW-SIGN FW-SIGN-01 ~ 20 20건 Phase 6 multichain-signing-firmware-spec.md
FW-WYSIWYS FW-WYSIWYS-01 ~ 20 20건 Phase 4 (원안) + Phase 6 (상세화) wysiwys-design.md -> wysiwys-display-firmware-spec.md
FW-POLICY FW-POLICY-01 ~ 10 10건 Phase 4 hardware-policy-engine.md
FW-UPDATE FW-UPDATE-01 ~ 14 14건 Phase 6 firmware-update-security.md
합계 64건

3.2. 우선순위별 분류

우선순위 건수 비율 설명
필수 52건 81% 기본 서명, WYSIWYS, 정책, 업데이트 핵심 기능
높음 10건 16% MicroSD, 키 교체, 감사 이벤트, 확장 인터페이스 등
중간 2건 3% 업데이트 진행 표시, 업데이트 로그

3.3. 앱릿별 분류

앱릿 요구사항 ID 건수
Signing Applet FW-SIGN-01~20 20건
WYSIWYS Applet FW-WYSIWYS-01~20 20건
Policy Applet FW-POLICY-01~10 10건
System (업데이트) FW-UPDATE-01~14 14건

3.4. FW-SIGN 요구사항 (20건)

ID 요구사항명 우선순위 SE 리소스
FW-SIGN-01 PSBT v0/v2 바이너리 디코딩 필수 RAM 8KB
FW-SIGN-02 PSBT 스트리밍 파싱 엔진 필수 RAM 8KB
FW-SIGN-03 Schnorr 서명 생성 (BIP-340) 필수 RAM 512B, ~100ms
FW-SIGN-04 MuSig2 Round 1 -- Nonce 생성 필수 저장 66B/세션, ~110ms
FW-SIGN-05 MuSig2 Round 2 -- Partial Sig 필수 RAM 256B, ~120ms
FW-SIGN-06 MuSig2 세션 관리 필수 저장 132B
FW-SIGN-07 BIP-373 PSBT 확장 필드 처리 필수 PSBT 확장
FW-SIGN-08 EVM RLP 디코딩 필수 RAM 2KB
FW-SIGN-09 ECDSA 서명 (secp256k1) 필수 RAM 256B, ~100ms
FW-SIGN-10 EIP-712 Structured Data 서명 필수 RAM 128B
FW-SIGN-11 ABI 디코딩 엔진 필수 RAM 512B
FW-SIGN-12 SE 토큰 DB 관리 필수 저장 2KB
FW-SIGN-13 SE 함수 셀렉터 DB 관리 필수 저장 4KB
FW-SIGN-14 BIP-32 HD 키 파생 필수 RAM 128B, ~100ms
FW-SIGN-15 Chain Parser Interface 높음 인터페이스만
FW-SIGN-16 EIP-155 Chain ID 관리 높음 저장 ~200B
FW-SIGN-17 Sighash 계산 (BTC Taproot) 필수 SHA-256 HW
FW-SIGN-18 keccak256 구현 필수 ROM ~2KB (SW)
FW-SIGN-19 Nonce 생성 (RFC 6979) 필수 RAM 64B
FW-SIGN-20 서명 카운터 관리 필수 저장 4B

3.5. FW-WYSIWYS 요구사항 (20건)

ID 요구사항명 우선순위 SE 리소스
FW-WYSIWYS-01 PSBT 파싱 엔진 (8KB 내 스트리밍) 필수 RAM 8KB
FW-WYSIWYS-02 RLP/ABI 디코딩 엔진 필수 RAM 2KB
FW-WYSIWYS-03 토큰 매핑 테이블 (초기 5종, 최대 50개) 필수 저장 2KB
FW-WYSIWYS-04 함수 셀렉터 DB (초기 10종, 최대 256개) 필수 저장 4KB
FW-WYSIWYS-05 SHA-256 해시 비교 검증 (constant-time) 필수 RAM 256B
FW-WYSIWYS-06 4단계 경고 레벨 렌더링 필수 디스플레이
FW-WYSIWYS-07 다중 페이지 네비게이션 (최대 20페이지) 필수 RAM 40B
FW-WYSIWYS-08 Chain Parser Interface 높음 인터페이스만
FW-WYSIWYS-09 주소 축약/전체 표시 전환 높음 RAM 64B
FW-WYSIWYS-10 해시 불일치 자동 서명 거부 + 잠금 필수 저장 8B
FW-WYSIWYS-11 금액 포맷팅 엔진 필수 RAM 128B
FW-WYSIWYS-12 EIP-55 체크섬 주소 생성 필수 RAM 64B
FW-WYSIWYS-13 Bech32/Bech32m 주소 인코딩 필수 RAM 128B
FW-WYSIWYS-14 경고 레벨 판정 로직 필수 로직만
FW-WYSIWYS-15 세션 타임아웃 관리 (60초) 필수 타이머
FW-WYSIWYS-16 감사 이벤트 생성 높음 저장 ~512B
FW-WYSIWYS-17 Raw Hex 표시 (256바이트) 필수 디스플레이
FW-WYSIWYS-18 Admin 파싱 불가 TX 금지 설정 높음 정책 1bit
FW-WYSIWYS-19 MuSig2 참여자 정보 표시 높음 PSBT 확장
FW-WYSIWYS-20 approve 무제한 승인 감지 필수 비교 로직

3.6. FW-POLICY 요구사항 (10건)

ID 요구사항명 우선순위 연계 문서
FW-POLICY-01 건당 금액 비교 로직 (uint64 기반) 필수 hardware-policy-engine.md 섹션 3.1
FW-POLICY-02 Merkle Proof 검증 로직 (SHA-256 x 20 depth) 필수 hardware-policy-engine.md 섹션 3.2
FW-POLICY-03 일일 누적 카운터 (서명 횟수 기반 리셋) 필수 hardware-policy-engine.md 섹션 3.3
FW-POLICY-04 서명 횟수 Rate Limit (슬라이딩 윈도우) 필수 hardware-policy-engine.md 섹션 3.4
FW-POLICY-05 위반 사유 코드 체계 (8종) 필수 hardware-policy-engine.md 섹션 4.1
FW-POLICY-06 정책 업데이트 서명 검증 (Admin 쿼럼) 필수 hardware-policy-engine.md 섹션 5.1
FW-POLICY-07 쿨다운 타이머 (서명 횟수 기반) 필수 hardware-policy-engine.md 섹션 5.3
FW-POLICY-08 정책 데이터 보존 (펌웨어 업데이트 시) 필수 hardware-policy-engine.md 섹션 5.4
FW-POLICY-09 정책 위반 화면 표시 (위반 유형별 메시지) 필수 hardware-policy-engine.md 섹션 4.2
FW-POLICY-10 버전 관리 및 롤백 방지 (단조 증가) 필수 hardware-policy-engine.md 섹션 5.2

3.7. FW-UPDATE 요구사항 (14건)

ID 요구사항명 우선순위 연계 문서
FW-UPDATE-01 코드 서명 검증 (D'CENT ECDSA) 필수 firmware-update-security.md 섹션 3
FW-UPDATE-02 Admin 쿼럼 서명 검증 (M-of-N) 필수 firmware-update-security.md 섹션 5
FW-UPDATE-03 바이너리 무결성 검증 (SHA-256) 필수 firmware-update-security.md 섹션 3.2
FW-UPDATE-04 버전 롤백 방지 (NV 카운터) 필수 firmware-update-security.md 섹션 7
FW-UPDATE-05 데이터 영역 보존 (SHA-256 비교) 필수 firmware-update-security.md 섹션 6
FW-UPDATE-06 물리 버튼 2회 확인 필수 firmware-update-security.md 섹션 3.3
FW-UPDATE-07 QR 채널 수신 (Animated QR Fountain) 필수 firmware-update-security.md 섹션 4.1
FW-UPDATE-08 USB-C 채널 수신 필수 firmware-update-security.md 섹션 4.2
FW-UPDATE-09 MicroSD 채널 수신 (FAT32) 높음 firmware-update-security.md 섹션 4.3
FW-UPDATE-10 브릭 방지 (A/B 또는 Recovery 파티션) 필수 firmware-update-security.md 섹션 7.3
FW-UPDATE-11 키 교체 인증서 처리 높음 firmware-update-security.md 섹션 3.1
FW-UPDATE-12 데이터 손상 복구 모드 높음 firmware-update-security.md 섹션 6.3
FW-UPDATE-13 업데이트 진행 상태 표시 중간 UX
FW-UPDATE-14 업데이트 로그 기록 중간 감사 추적

4. 구현 우선순위 및 의존성 맵

4.1. 구현 로드맵 (6단계)

Phase 1 (서명 기본)          Phase 2 (WYSIWYS)
  |                           |
  | FW-SIGN-01~03,08~09,14   | FW-WYSIWYS-01~07,11~15,17,20
  | FW-SIGN-17~20            | FW-WYSIWYS-08~09
  |                           |
  v                           v
Phase 3 (정책 엔진) -------> Phase 4 (MuSig2)
  |                           |
  | FW-POLICY-01~10           | FW-SIGN-04~07
  |                           | FW-WYSIWYS-19
  |                           |
  v                           v
Phase 5 (펌웨어 업데이트) --> Phase 6 (확장)
  |                           |
  | FW-UPDATE-01~14           | FW-SIGN-15~16
  |                           | FW-WYSIWYS-16,18
  |                           | 추가 체인 파서 (Tron, Solana)
  v                           v

4.2. 각 단계 상세

Phase 1: 서명 기본 (필수 -- 최우선)

목표: BTC Schnorr 단일 서명 + EVM ECDSA 서명의 기본 동작 확보

포함 요구사항 건수 핵심 기능
FW-SIGN-01~03 3건 PSBT 파싱, 스트리밍 엔진, Schnorr 서명
FW-SIGN-08~09 2건 RLP 디코딩, ECDSA 서명
FW-SIGN-14 1건 BIP-32 HD 키 파생
FW-SIGN-17~20 4건 Sighash, keccak256, Nonce, 카운터

선행 조건: [HW-CONFIRM] P1 7건 확인 완료 예상 소요: 3-4주

Phase 2: WYSIWYS (필수)

목표: 트랜잭션 내용 화면 표시 + 해시 비교 검증 + 경고 체계

포함 요구사항 건수 핵심 기능
FW-WYSIWYS-01~07 7건 파싱 엔진, DB, 해시 비교, 경고 렌더링, 페이지 네비게이션
FW-WYSIWYS-10~15 6건 잠금, 금액 포맷, 주소 인코딩, 판정 로직, 타임아웃
FW-WYSIWYS-17, 20 2건 Raw Hex, approve 감지
FW-SIGN-10~13 4건 EIP-712, ABI, 토큰 DB, 셀렉터 DB

선행 조건: Phase 1 완료, [HW-CONFIRM] P3 (디스플레이/카메라) 확인 예상 소요: 4-5주

Phase 3: 정책 엔진 (필수)

목표: 4개 HW 정책 규칙 SE 내부 평가 + Merkle Root 화이트리스트

포함 요구사항 건수 핵심 기능
FW-POLICY-01~10 10건 금액 한도, Merkle, 일일 카운터, Rate Limit, 쿨다운, 업데이트

선행 조건: Phase 2 완료 (WYSIWYS Applet과 Internal API 연동) 예상 소요: 2-3주

Phase 4: MuSig2 (필수)

목표: BIP-327 MuSig2 2라운드 프로토콜 SE 구현

포함 요구사항 건수 핵심 기능
FW-SIGN-04~07 4건 Nonce 생성, Partial Sig, 세션 관리, BIP-373
FW-WYSIWYS-19 1건 MuSig2 참여자 정보 표시

선행 조건: Phase 1 Schnorr 서명 완료, [HW-CONFIRM] HW-C05 (Schnorr HW 가속) 예상 소요: 3-4주

Phase 5: 펌웨어 업데이트 (높음)

목표: 에어갭 펌웨어 업데이트 보안 메커니즘

포함 요구사항 건수 핵심 기능
FW-UPDATE-01~14 14건 코드 서명, 쿼럼, 데이터 보존, 롤백 방지, 채널 수신, 브릭 방지

선행 조건: [HW-CONFIRM] HW-C12 (Flash 레이아웃) 확인 예상 소요: 3-4주

Phase 6: 확장 (높음)

목표: 추가 체인 파서 + 감사 로그 + 관리 정책

포함 요구사항 건수 핵심 기능
FW-SIGN-15~16 2건 Chain Parser Interface, Chain ID 관리
FW-WYSIWYS-08~09, 16, 18 4건 확장 인터페이스, 감사 이벤트, Admin 정책
추가 체인 파서 - Tron(Phase 1 출시), Solana(Phase 2), Cosmos(Phase 2)

선행 조건: Phase 1~5 핵심 완료, [HW-CONFIRM] HW-C06 (Ed25519 지원) 예상 소요: 2-3주 (파서당 1-2주 추가)

4.3. 의존성 다이어그램

[HW-CONFIRM P1 (7건)]
       |
       v
Phase 1: 서명 기본 ----+
       |                |
       v                |
Phase 2: WYSIWYS <------+
       |
       v
Phase 3: 정책 엔진
       |
       v
Phase 4: MuSig2
       |
       v
Phase 5: 펌웨어 업데이트
       |
       v
Phase 6: 확장

의존성 상세:
  - Phase 2는 Phase 1의 파싱 엔진/서명 모듈에 의존
  - Phase 3은 Phase 2의 ParsedTransaction 출력에 의존 (Internal API)
  - Phase 4는 Phase 1의 Schnorr 구현에 의존
  - Phase 5는 Phase 1~4와 독립적이나, 데이터 보존(FW-UPDATE-05)이 저장 레이아웃에 의존
  - Phase 6은 Phase 1~5의 인프라에 의존

4.4. 병렬 개발 가능 영역

병렬 가능 조합 조건 참고
Phase 1 + Phase 5 (일부) Flash 레이아웃 확정 시 업데이트 수신 로직은 서명 무관
Phase 2 + Phase 4 (일부) Schnorr 완료 후 MuSig2 Nonce는 WYSIWYS와 독립
Phase 3 + Phase 6 (일부) 정책 평가 로직 확정 후 감사 로그는 별도 모듈

5. SE 리소스 버짓 종합

5.1. 저장 공간 배분 (EEPROM)

hardware-capability-assessment.md의 SE 역량 데이터 기반:

영역 크기 비율 앱릿
Private Keys (HD derived) ~1,600B 16.1% Signing
함수 셀렉터 DB 4,096B 41.2% WYSIWYS
토큰 DB 2,048B 20.6% WYSIWYS
정책 데이터 (전체) 1,120B 11.3% Policy
MuSig2 세션 132B 1.3% Signing
서명 카운터 + 메타 68B 0.7% Signing
WYSIWYS 잠금 카운터 8B 0.1% WYSIWYS
예비 마진 (10%) ~930B 9.3% -
합계 ~9,971B (~9.8KB) 100%

일반적 SE 가용 공간: - 표준 SE (EAL5+): 32-128KB 가용 -- 충분 - 프리미엄 SE (EAL6+): 128-512KB 가용 -- 충분

축소 시나리오 (SE 공간 부족 시): - 셀렉터 DB: 256개 -> 128개 (2KB 절감) - 토큰 DB: 50개 -> 20개 (~800B 절감) - 총 최소 ~7KB까지 축소 가능

5.2. 작업 메모리 배분 (RAM)

단계 메모리 요구 동시 사용
CBOR 수신 + PSBT 파싱 8,192 + 512 = 8,704B 피크
WYSIWYS 해시 + 표시 1,024 + 256 = 1,280B PSBT 해제 후
정책 평가 + Merkle 1,024 + 256 = 1,280B 순차
서명 생성 512B 순차

피크 사용량: ~8,704B (~8.5KB) -- 단계 1(PSBT 파싱)에서 최대

일반적 SE RAM: - 표준 SE (EAL5+): 8-16KB 가용 -- 충분 (여유 제한적) - 프리미엄 SE (EAL6+): 16-32KB 가용 -- 충분

완화 전략: - PSBT 스트리밍 파싱 필수 (전체 로드 불가) - 단계별 순차 메모리 해제 (파이프라인 방식) - 대용량 PSBT(>10KB)는 USB-C 채널로 전송 (앱↔콜드월렛 간 USB-C 연결이므로 용량 제약 없음)

5.3. 성능 버짓

전체 서명 파이프라인 타임라인 (사용자 확인 대기 제외):

체인/시나리오 자동 처리 시간 목표 판정
BTC 단순 전송 (1-in, 2-out) ~1.0초 < 2초 충족
BTC 다중 입력 (5-in, 2-out) ~2.5초 < 4초 충족
BTC MuSig2 Round 1 ~1.1초 < 1초 근접
BTC MuSig2 Round 2 ~1.2초 < 1.5초 충족
EVM 단순 전송 ~0.7초 < 1초 충족
ERC-20 transfer ~0.8초 < 1.5초 충족
EIP-712 Safe execTransaction ~1.2초 < 2초 충족
전체 파이프라인 (파싱+정책+서명) ~3.6초 < 5초 충족

성능 분해:

파싱: ~500ms (BTC) / ~200ms (EVM)
 |
 +--> WYSIWYS 해시: ~10ms
 |
 +--> 화면 렌더링: ~200ms
 |
 +--> [사용자 확인 대기: 3-30초]
 |
 +--> Merkle 검증: ~50ms
 |
 +--> 정책 평가: ~5ms
 |
 +--> 키 파생: ~100ms
 |
 +--> 서명 생성: ~100ms
 |
 +--> 카운터 업데이트: ~20ms
 |
 = 합계: ~985ms (BTC) / ~685ms (EVM) + 사용자 대기

5.4. 잔여 용량 분석

리소스 요구 일반 SE (EAL5+) 가용 잔여 비고
EEPROM ~9.8KB 32-128KB 22-118KB 추가 체인, 토큰 DB 확장 여유 충분
RAM ~8.5KB (피크) 8-16KB 0-7.5KB 여유 제한적, 스트리밍 파싱 필수
성능 ~3.6초 (파이프라인) 5초 목표 1.4초 추가 체인 파서 오버헤드 여유

향후 확장 시 SE 리소스 영향:

확장 항목 EEPROM 추가 RAM 추가 성능 추가
Tron 파서 ~2KB ROM ~1KB +200ms
Solana 파서 ~4KB ROM ~2KB +300ms
Cosmos 파서 ~2KB ROM ~1KB +200ms
토큰 DB 50 -> 100개 +2KB 없음 없음
셀렉터 DB 256 -> 512개 +4KB 없음 없음

6. 하드웨어 팀 확인 필요 항목 종합 ([HW-CONFIRM] 목록)

6.1. 전체 목록 (17건)

P1: 서명 기능 관련 (7건) -- 개발 착수 2주 전 확인 필수

ID 카테고리 확인 항목 설계 영향
HW-C01 SE 칩 정확한 SE 칩 모델명 가용 EEPROM/RAM/알고리즘 결정
HW-C02 SE 인증 CC 인증 수준 (EAL5+/6+) EAL5+ 미만 시 칩 교체 필수
HW-C03 SE 저장 EEPROM 총 용량 및 앱릿 가용 공간 ~9.8KB 요구 충족 여부
HW-C04 SE RAM RAM 총 용량 및 앱릿 가용 RAM ~8.5KB 피크 충족 여부
HW-C05 SE 알고리즘 Schnorr (BIP-340) HW 가속 지원 미지원 시 SW 폴백 + 성능 조정
HW-C06 SE 알고리즘 Ed25519 HW 지원 여부 미지원 시 Solana/Cosmos 연기
HW-C07 SE 플랫폼 GlobalPlatform/JavaCard 버전 앱릿 개발 환경 결정

P2: 정책 엔진/USB-C/NFC 관련 (5건) -- 개발 착수 4주 전 확인

ID 카테고리 확인 항목 설계 영향
HW-C08 USB-C USB-C 인터페이스 사양 및 데이터 전송 프로토콜 앱↔콜드월렛 통신 프로토콜 확정
HW-C09 USB-C USB-C 전원 공급 및 데이터 동시 지원 여부 서명 세션 중 충전 가능 여부
HW-C10 NFC (R3covery 카드) NFC 안테나 안정 거리 및 SE-to-SE 통신 안정성 R3covery 카드 NFC 통신 가능 여부
HW-C11 NFC (R3covery 카드) NFC 전원 모드 (패시브/액티브/배터리) R3covery 카드 세션 유지 시간 영향
HW-C12 Flash MCU Flash 총 용량 및 파티션 레이아웃 듀얼 파티션(A/B) 지원 가능 여부

P3: 디스플레이/카메라 관련 (5건) -- 개발 착수 6주 전 확인

ID 카테고리 확인 항목 설계 영향
HW-C13 디스플레이 화면 해상도 및 유형 (OLED/LCD) WYSIWYS 화면 레이아웃 최종 설계
HW-C14 디스플레이 컬러 깊이 (흑백/16bit) 경고 레벨 시각적 구분 방식
HW-C15 입력 물리 버튼 구성 (개수, 배치) 4방향 네비게이션 지원 여부
HW-C16 카메라 카메라 해상도 및 프레임 레이트 Animated QR 인식 성능 기준
HW-C17 카메라 초점 방식 및 최적 인식 거리 QR 스캔 UX 가이드라인

6.2. 확인 결과별 설계 영향도

확인 결과 시나리오 영향 받는 요구사항 대응 전략
SE EEPROM < 16KB FW-SIGN-12, 13, FW-WYSIWYS-03, 04 토큰/셀렉터 DB 규모 축소
SE RAM < 8KB FW-SIGN-01, 02, FW-WYSIWYS-01 파싱 버퍼 축소, 최대 입력 수 제한
Schnorr HW 미지원 FW-SIGN-03, 04, 05 SW Schnorr 구현, 성능 목표 5초->8초
Ed25519 HW 미지원 향후 체인 확장 Solana/Cosmos 일정 연기
Extended APDU 미지원 FW-UPDATE-08 Standard APDU 체이닝 최적화
Flash A/B 파티션 불가 FW-UPDATE-10 Recovery Partition 방식 채택
2버튼만 지원 FW-WYSIWYS-07 2버튼 네비게이션 UX 재설계

6.3. 확인 우선순위 및 기한 권고

우선순위 항목 수 권고 기한 근거
P1 7건 펌웨어 개발 착수 2주 전 SE 리소스 확정 없이 앱릿 설계 불가
P2 5건 펌웨어 개발 착수 4주 전 USB-C 프로토콜 + NFC(R3covery 카드) 커맨드셋은 앱릿과 병행 개발 가능
P3 5건 펌웨어 개발 착수 6주 전 UI 렌더링은 후순위 개발 가능

7. 테스트 전략 개요

7.1. 단위 테스트

앱릿 테스트 범위 테스트 벡터 참조
Signing PSBT 파싱, Schnorr 서명, ECDSA 서명, MuSig2 BIP-340 테스트 벡터, TC-SIGN-01~04 multichain-signing-firmware-spec.md 섹션 7
WYSIWYS 해시 생성, 비교 검증, 경고 판정, 금액 포맷 TC별 정규화 해시 비교 wysiwys-display-firmware-spec.md 섹션 3
Policy 금액 비교, Merkle 검증, 카운터, Rate Limit 경계값 테스트 (한도 = 요청액) hardware-policy-engine.md 섹션 3

7.2. 통합 테스트

전체 서명 파이프라인 End-to-End 테스트:

테스트 시나리오:

[TC-INT-01] BTC 단순 전송 파이프라인
  SignRequest -> WYSIWYS(PSBT 파싱 + 해시 비교 + NONE 화면)
              -> Policy(금액 한도 + 화이트리스트 PASS)
              -> Signing(Schnorr 서명)
              -> SignResponse

[TC-INT-02] ERC-20 transfer 파이프라인
  SignRequest -> WYSIWYS(RLP+ABI 디코딩 + 토큰 매핑 + 해시 비교 + NONE 화면)
              -> Policy(금액 한도 PASS)
              -> Signing(ECDSA 서명)
              -> SignResponse

[TC-INT-03] Unknown Contract 파이프라인
  SignRequest -> WYSIWYS(RLP 디코딩 + 셀렉터 미매칭 + CAUTION 화면)
              -> Policy(화이트리스트 미확인)
              -> 사용자 2회 확인 -> Signing
              -> SignResponse

[TC-INT-04] 정책 위반 파이프라인
  SignRequest -> WYSIWYS(파싱 + 해시 PASS)
              -> Policy(금액 한도 초과 -> FAIL)
              -> WYSIWYS(위반 화면 표시)
              -> SignResponse(에러 코드 0x20)

[TC-INT-05] MuSig2 2라운드 파이프라인
  Round 1: MuSig2NonceReq -> Signing(Nonce 생성 + 저장) -> public_nonce
  Round 2: MuSig2SignReq  -> WYSIWYS -> Policy -> Signing(Partial Sig) -> partial_sig

7.3. 보안 테스트

STRIDE 위협 모델 기반 공격 시나리오:

STRIDE 카테고리 공격 시나리오 테스트 방법 기대 결과
Spoofing 위조 펌웨어 설치 시도 서명 없는 바이너리 전달 FIRMWARE_SIGNATURE_INVALID
Tampering 트랜잭션 수신 주소 변조 WYSIWYS 해시 불일치 유도 WYSIWYS_HASH_MISMATCH (0x30)
Repudiation 서명 부인 감사 로그 확인 서명 카운터 + 해시 기록 존재
Info Disclosure SE 내부 키 추출 시도 비정상 APDU 시퀀스 에러 반환, 키 노출 없음
DoS MuSig2 세션 고갈 2개 초과 세션 요청 MUSIG2_SESSION_LIMIT (에러)
Elevation Admin 권한 없이 정책 변경 쿼럼 미달 PolicyUpdate POLICY_AUTH_FAILED (0x22)
Rollback 이전 펌웨어 설치 시도 구 버전 바이너리 전달 FIRMWARE_ROLLBACK_REJECTED
Timing 해시 비교 타이밍 분석 반복 불일치 요청 constant-time 비교 확인

7.4. 성능 테스트

테스트 항목 측정 기준 목표 비고
BTC 단순 서명 지연 SignRequest -> SignResponse < 2초 (사용자 대기 제외)
EVM 단순 서명 지연 SignRequest -> SignResponse < 1초 (사용자 대기 제외)
대용량 PSBT (5 입력) 파싱 완료 시간 < 4초 스트리밍 파싱
MuSig2 전체 흐름 Round 1 + Round 2 < 2.5초
정책 평가 지연 4규칙 전체 < 100ms Merkle depth 20 포함
펌웨어 업데이트 (50KB, USB-C) 수신 + 검증 < 15초

8. 참조 문서 목록

Phase 4: 차별화 확장 설계 (2건)

파일 경로 내용 요약 펌웨어 관련 요구사항
deliverables/minho-04-differentiation-extended-architecture/wysiwys-design.md WYSIWYS 하드웨어 검증 기능 전체 설계 -- 체인별 파싱 범위, 표시 항목, 해시 비교 검증, 경고 레벨 체계 FW-WYSIWYS-01~10 (원안)
deliverables/minho-04-differentiation-extended-architecture/hardware-policy-engine.md SE 내부 하드웨어 정책 엔진 설계 -- 4개 규칙, Merkle Root, 정책 업데이트, 쿨다운 FW-POLICY-01~10

Phase 5: 시스템 아키텍처 설계 (4건)

파일 경로 내용 요약 펌웨어 관련 요구사항
deliverables/minho-05-system-architecture-design/firmware-signing-interface.md SE 앱릿 구조(3 Applet), SignRequest/SignResponse 흐름, APDU 커맨드셋, 에러 코드 체계 SE 앱릿 아키텍처 기반
deliverables/minho-05-system-architecture-design/airgap-communication-protocol.md UR v2 + CBOR 스키마, USB-C 통신 프로토콜, QR Fountain 코드 에어갭 통신 프로토콜
deliverables/minho-05-system-architecture-design/chain-abstraction-layer.md ChainRegistry Plugin 패턴, UTXO/EVM/EdDSA 어댑터 분리 Chain Parser Interface 기반
deliverables/minho-05-system-architecture-design/security-threat-model.md STRIDE 4계층 방어 모델, 에어갭->WYSIWYS->HW 정책->다중 서명 보안 테스트 시나리오 기반

Phase 6: 펌웨어 요구사항 (4건)

파일 경로 내용 요약 펌웨어 관련 요구사항
deliverables/minho-06-firmware-requirements/hardware-capability-assessment.md D'CENT X SE/디스플레이/USB-C/NFC(R3covery 카드)/카메라 역량 검증, SE 리소스 버짓 합산, [HW-CONFIRM] 17건 SE 리소스 제약 기준
deliverables/minho-06-firmware-requirements/multichain-signing-firmware-spec.md BTC(PSBT+Schnorr+MuSig2) + EVM(RLP+ECDSA+EIP-712) 서명 펌웨어 상세 요구사항 FW-SIGN-01~20
deliverables/minho-06-firmware-requirements/wysiwys-display-firmware-spec.md WYSIWYS 파싱 엔진, 해시 비교, 경고 레벨, 디스플레이 렌더링 펌웨어 상세 요구사항 FW-WYSIWYS-01~20 (상세화)
deliverables/minho-06-firmware-requirements/firmware-update-security.md 에어갭 펌웨어 업데이트 보안 메커니즘 -- 코드 서명, 쿼럼 승인, 데이터 보존, 롤백 방지 FW-UPDATE-01~14

본 문서는 Phase 6 Firmware Requirements의 세 번째 산출물(2/2)이자 전체 프로젝트의 최종 산출물로, D'CENT X 엔터프라이즈 콜드월렛 펌웨어 개발을 위한 종합 핸드오프 문서이다. Phase 4/5/6에서 도출된 64건의 펌웨어 요구사항(FW-SIGN 20건, FW-WYSIWYS 20건, FW-POLICY 10건, FW-UPDATE 14건)을 통합하고, 6단계 구현 로드맵, SE 리소스 버짓, [HW-CONFIRM] 17건의 하드웨어 확인 항목, 테스트 전략을 정리하여 펌웨어 팀이 구현에 착수할 수 있는 기반을 제공한다.


관련 문서