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건의 하드웨어 확인 항목, 테스트 전략을 정리하여 펌웨어 팀이 구현에 착수할 수 있는 기반을 제공한다.
관련 문서