수탁형 콜드 월렛 아키텍처 (Custodial Cold Wallet Architecture)
작성일: 2026-04-17
본 아키텍처는 Fireblocks Cold Wallet 플랫폼을 기반으로 한 수탁형(custodial) 가상자산 관리 서비스의 참조 설계입니다.
기반 리서치:
- Fireblocks Cold Wallet 리서치
- KISA 가상자산 이용자 보호법 리서치
- 규제-Fireblocks 매핑
- Fireblocks 공식 문서 15종 한글 번역
1. 설계 원칙 (Design Principles)
| # | 원칙 | 근거 |
|---|---|---|
| P1 | Hot/Cold 워크스페이스 물리 분리 | 한 워크스페이스에서 Hot+Cold 공존 불가 (Fireblocks 제약) |
| P2 | 고객 자산 Segregated Vault | 국내 이용자 자산 분리 의무 + Fireblocks Segregated 권장 |
| P3 | 역할 분리 (SoD) | Owner ≠ Signer ≠ Approver — 서명·승인·관리 완전 분리 |
| P4 | 최소 2명 서명자 원칙 | 단일 서명자 금지 (Fireblocks Best Practices) |
| P5 | 자산 대부분 Cold 보관 | 한국 규제 준수 + EY/Fireblocks 39% 통계 기반 |
| P6 | 에어갭 무결성 유지 | iOS 전용 디바이스 · 감독 모드 · 영구 오프라인 |
| P7 | 다변화 백업 | 키 쉐어 + 복구 패스프레이즈 지리·인력·매체 분리 |
| P8 | 정책 우선 설계 | TAP(Transaction Authorization Policy) 기반 방어적 기본값 |
| P9 | 감사 가능성 | 모든 이벤트 webhook → 외부 SIEM 아카이빙 |
| P10 | 연 1회 DR 리허설 | 테스트넷에서 Soft/Hard Recovery 검증 |
고객 / 거래 상대방
앱 · 웹 · 거래소 · 외부 지갑
▼ 입금
▼ 출금 요청
서비스 백엔드 (자체 구축)
- KYC/AML · 한도 체크 · 고객 Vault 매핑
- Fireblocks API Gateway
▼
▼
운영 워크스페이스 (W-OPS)
Hot + Warm
- API Co-Signer
- 입금 감지 · Sweeping
- 소액 출금 자동화
수탁 워크스페이스 (W-COLD)
Cold-only
- 에어갭 iOS 서명
- 양방향 QR 서명
- 고액 출금 수동 승인
⇵ Fireblocks P2P Network (쿼럼 승인) ⇵
▼
▼
온체인 (BTC · ETH · 스테이블코인 · ...)
감사·컴플라이언스 계층
Webhook → SIEM → 장기 아카이브(7년) → 규제 보고서
3. 워크스페이스 구조
📘 상세:
docs/01
3.1 W-OPS (운영 워크스페이스, Hot + Warm)
| 항목 | 내용 |
|---|---|
| 타입 | Hot + Warm 혼합 |
| 역할 | 일상 입출금, 고객 입금 수집, 소액 출금, 거래소 연동 |
| 서명 | API Co-Signer (자동) + Warm 모바일 승인 (고빈도 수동) |
| 자산 비중 | 전체 자산의 소수 (예: ~10~20% 이하) |
| 연결성 | 인터넷 연결 · API 활성 |
3.2 W-COLD (수탁 워크스페이스, Cold-only)
| 항목 | 내용 |
|---|---|
| 타입 | Cold-only (계약서 명시 필수) |
| 역할 | 고객 자산 장기 보관, 대액 출금 승인 |
| 서명 | 에어갭 iOS + Fireblocks Cold Wallet 앱 + 양방향 QR |
| 자산 비중 | 전체 자산의 대부분 (예: 80%+) |
| 연결성 | 완전 오프라인 (콘솔만 온라인) |
3.3 워크스페이스 간 통신
- P2P Network 연결 사전 등록 (핫 환경에서 먼저 프로필 설정 → Cold 연결)
- Admin Quorum 승인 양측에서 필요
- 자금 이동 시 별도 온체인 전송 없이 네트워크 내부 라우팅 사용
- 유연한 라우팅(flexible routing) — 콜드 워크스페이스에서 Early Availability (CSM 활성화 필요)
4. Vault 구조 — 고객별 Segregated
W-COLD (수탁 워크스페이스)
├── Vault: customer-00001/
│ ├── BTC 주소 · 키 쉐어
│ ├── ETH 주소 · 키 쉐어
│ └── USDC(ERC20) 주소 · 키 쉐어
├── Vault: customer-00002/
│ └── ...
├── Vault: customer-N/
│ └── ...
└── Vault: internal-reserve/ ← 회사 자금 (Omnibus 허용)
핵심:
- 고객별 독립 Vault Account = 독립 온체인 주소 = 독립 키 쉐어
- 고객 자산과 회사 자산 절대 혼합 금지
- 고객 자산 간에도 혼합 금지 (Omnibus 금지)
- 내부 운영 자금(유동성, 수수료 수령 등)만 Omnibus 형태 허용
5. 역할 및 거버넌스
5.1 W-COLD 역할 배치 (권장)
| 역할 | 인원 | 책임 | 디바이스 |
|---|---|---|---|
| Owner | 1명 (+ 예비 1명) | 루트 MPC 키 · 신규 서명자 승인만 | 에어갭 iOS (보안 금고) |
| Signer | 최소 3명 (교대 가능) | 대액 출금 서명 | 전용 에어갭 iOS 각자 |
| Non-Signing Admin | 2명+ | 일상 승인, 워크스페이스 설정 변경 | 온라인 Fireblocks 앱 |
| Approver | 2~3명 (컴플라이언스) | TAP 정책 기반 트랜잭션 검증 | 온라인 Fireblocks 앱 |
| Viewer | 감사팀 | 조회 전용 | 온라인 |
| Security Manager | 1명 (IT) | iOS 감독 모드 프로비저닝 | macOS + Apple Configurator |
5.2 원칙
- Owner는 CISO 역할 — 일상 운영 배제, 서명 디바이스 승인 외 활동 금지
- Signer ≠ Approver — 서명자가 자신의 트랜잭션을 승인할 수 없도록 정책 구성
- 최소 3 Signer — 교대·휴가·사고 대비 (분실/퇴사 즉시 재프로비저닝)
- 사용자 관리는 지원 티켓 기반 — 현재 셀프 서비스는 Early Availability
- 연 1회 접근 권한 재검토 (Non-Signing Admin·Approver 중심)
5.3 Admin Quorum 설정
| 변경 유형 | 필요 승인 |
|---|---|
| 정책(TAP) 변경 | Non-Signing Admin 2명 + Approver 1명 |
| 화이트리스트 주소 추가 | Non-Signing Admin 2명 |
| 신규 서명자 추가 | Owner 승인 (에어갭 QR) |
| P2P 네트워크 연결 | Admin Quorum + 상대 워크스페이스 쿼럼 |
| 워크스페이스 동결(Freeze) | Owner 또는 Non-Signing Admin 1명 (긴급 시) |
6. 정책(TAP) 레이어
📘 상세:
docs/13
TAP는 첫 번째 일치 원칙(first-match) — 가장 제한적인 규칙부터 순서대로 정렬.
6.1 W-COLD TAP 권장 레이어
| 순위 | 규칙 | 조건 | 조치 |
|---|---|---|---|
| 1 | 블랙리스트 차단 | 제재 대상 · 미등록 고위험 주소 | BLOCK |
| 2 | 내부 Admin 송금 금지 | 출금자 = Admin/Owner | BLOCK |
| 3 | 일일 한도 초과 | 24h 누적 > 임계값 | BLOCK · 재시도 시 재승인 |
| 4 | P2P 네트워크 송금 | 상대가 등록 거래상대방 | Signer 1명 + Approver 1명 |
| 5 | 화이트리스트 송금 (소액) | whitelist + < 1 BTC 상당 | Signer 1명 + Approver 1명 |
| 6 | 화이트리스트 송금 (대액) | whitelist + ≥ 1 BTC 상당 | Signer 2명 + Approver 2명 |
| 7 | 신규 주소 송금 | whitelist 미등록 | BLOCK (화이트리스트 등록 먼저) |
| 8 | 시간대 제한 | 업무 시간 외 | 대기 + 내부 알림 |
| 9 | 기본 거부(catch-all) | 모든 기타 | BLOCK |
6.2 W-OPS TAP 권장
- API 자동 서명은 소액 + 화이트리스트만 허용
- 임계값 초과는 자동 실패 → Warm 모바일 승인 → 그래도 초과 시 W-COLD로 라우팅
6.3 Sweeping (W-OPS → W-COLD 정기 이체)
- W-OPS 잔고가 일정 임계값 초과 시 자동 Sweeping
- 정책 엔진이 초과분을 P2P Network 경유로 W-COLD로 송금
- 일 1회 또는 시간당 체크 (배치 주기는 운영 요구에 맞춤)
7. 키 관리 및 백업 아키텍처
7.1 키 쉐어 배치
MPC-CMP 지갑 (3 key shares)
├── Share 1: Fireblocks 클라우드 (HSM 보호)
├── Share 2: 고객사 자체 저장소
│ ├─ W-OPS: API Co-Signer (온프렘 SGX TEE)
│ └─ W-COLD: 에어갭 iOS 기기 (Signer별 1대)
└── Share 3: 백업 저장소 (별도 지역)
7.2 백업 저장소 다변화 (권장)
| 요소 | 위치 #1 | 위치 #2 |
|---|---|---|
| Workspace Key Backup Recovery Kit | 본사 내화 금고 | 원격 DR 사이트 (타지역) |
| 복구 패스프레이즈 (Owner) | 금속 카드 - 은행 대여금고 | 금속 카드 - 제3자 수탁 (변호사 사무소 등) |
| 복구 패스프레이즈 (Signer별) | 각자 개인 금고 | (선택) 회사 비상 봉투 |
| 제3자 DR 서비스 | Coincover / Station70 평가 | — |
7.3 패스프레이즈 정책
- 절대 디지털 저장 금지 (스크린샷·타이핑·클라우드 업로드 불가)
- 기록 매체: 내화·방수 금속 카드에 각인
- 디바이스와 별도 위치 보관 (SPOF 방지)
- Cold Wallet 앱 v2.0.16+ Verify Passphrase로 분기별 유효성 확인
7.4 복구 시나리오
| 시나리오 | 방법 | 소요 시간 |
|---|---|---|
| Signer 기기 1대 분실 | 신규 Signer 온보딩 후 이전 삭제 (Soft Recovery) | 1~2일 |
| Owner 기기 분실 + 패스프레이즈 보유 | 복구 모드 활성화 (지원팀 화상 검증) | 수 일 |
| Owner 기기 분실 + 패스프레이즈 망실 | 기존 Signer를 임시 Owner로 승격 → 재프로비저닝 | 수 일~1주 |
| 전체 서명 인프라 손상 | Hard Recovery (fireblocks-key-recovery-tool + 백업 키트) | 수 일 (전면 운영 중단) |
7.5 DR 리허설 주기
- 분기별: Verify Passphrase (실제 복구 없이)
- 반기별: 테스트넷 워크스페이스에서 Soft Recovery
- 연 1회: 테스트넷에서 Hard Recovery Full Rehearsal
8. 입출금 트랜잭션 플로우
📊 요약 (의사결정자용): 아래 1장 다이어그램으로 입·출금 통제 구조 전체를 확인. 기술 상세 시퀀스는 이하 "개발자용 상세" 접기 블록에서 확인.
입금 플로우
flowchart LR
A["전용 주소 송금
고객 · 1:1 주소"]:::cust --> B["확정 감지
커스터디 · 온체인 블록"]:::cty B --> C["원장 · 고객 알림
은행 · 감사 로그"]:::bank C --> D{"임계값
초과?"} D -- 초과 --> E["★ 콜드 자동 이체
커스터디 · 오프라인 보관"]:::hi D -- 미만 --> F["핫 · 웜 유지
커스터디 · 운영 유동성"]:::cty classDef cust fill:#f3f4f6,stroke:#6b7280,color:#111827 classDef bank fill:#fff7ed,stroke:#b45309,color:#7c2d12 classDef cty fill:#eef4ff,stroke:#1d4ed8,color:#0c2769 classDef hi fill:#1d4ed8,stroke:#1d4ed8,color:#ffffff,stroke-width:2px
고객 · 1:1 주소"]:::cust --> B["확정 감지
커스터디 · 온체인 블록"]:::cty B --> C["원장 · 고객 알림
은행 · 감사 로그"]:::bank C --> D{"임계값
초과?"} D -- 초과 --> E["★ 콜드 자동 이체
커스터디 · 오프라인 보관"]:::hi D -- 미만 --> F["핫 · 웜 유지
커스터디 · 운영 유동성"]:::cty classDef cust fill:#f3f4f6,stroke:#6b7280,color:#111827 classDef bank fill:#fff7ed,stroke:#b45309,color:#7c2d12 classDef cty fill:#eef4ff,stroke:#1d4ed8,color:#0c2769 classDef hi fill:#1d4ed8,stroke:#1d4ed8,color:#ffffff,stroke-width:2px
출금 플로우
flowchart LR
A["출금 요청
고객 · 2FA 인증"]:::cust --> B["정책 · 한도 · 리스크 점검
은행 · AML · 화이트리스트"]:::bank B --> C{"대액?"} C -- 대액 --> D["★ 다중 승인 + 오프라인 서명
은행 + 커스터디"]:::hi C -- 소액 --> E["자동 승인
커스터디 · 정책 통과분"]:::cty D --> F["온체인 전송 · 고객 통보
커스터디"]:::term E --> F classDef cust fill:#f3f4f6,stroke:#6b7280,color:#111827 classDef bank fill:#fff7ed,stroke:#b45309,color:#7c2d12 classDef cty fill:#eef4ff,stroke:#1d4ed8,color:#0c2769 classDef hi fill:#1d4ed8,stroke:#1d4ed8,color:#ffffff,stroke-width:2px classDef term fill:#ffffff,stroke:#111827,stroke-width:2px,color:#111827
고객 · 2FA 인증"]:::cust --> B["정책 · 한도 · 리스크 점검
은행 · AML · 화이트리스트"]:::bank B --> C{"대액?"} C -- 대액 --> D["★ 다중 승인 + 오프라인 서명
은행 + 커스터디"]:::hi C -- 소액 --> E["자동 승인
커스터디 · 정책 통과분"]:::cty D --> F["온체인 전송 · 고객 통보
커스터디"]:::term E --> F classDef cust fill:#f3f4f6,stroke:#6b7280,color:#111827 classDef bank fill:#fff7ed,stroke:#b45309,color:#7c2d12 classDef cty fill:#eef4ff,stroke:#1d4ed8,color:#0c2769 classDef hi fill:#1d4ed8,stroke:#1d4ed8,color:#ffffff,stroke-width:2px classDef term fill:#ffffff,stroke:#111827,stroke-width:2px,color:#111827
범례: ■ 고객 · ■ 은행 운영·정책 · ■ 커스터디·온체인 · ★ 고위험 통제 포인트
ⓘ 전 단계 감사 로그 7년 보존 · 한국 가상자산이용자보호법(2024-07 시행) 준수
8.1 입금 플로우 (Deposit)
▸ 개발자용 상세 — 입금 시퀀스 (펼쳐보기)
sequenceDiagram
autonumber
actor Cust as 고객
participant Bank as 은행
participant WOPS as W-OPS (핫·웜)
participant SGX as SGX Co-Signer
participant CB as 콜백 핸들러
participant WCOLD as W-COLD (콜드)
Cust->>WOPS: 전용 입금 주소로 송금
Note over WOPS: 온체인 확정 블록 판정
BTC 3~6 / ETH 12~20 confirm WOPS->>Bank: CONFIRMED Webhook Note over Bank: 원장 갱신 · 고객 알림
감사 로그 (SIEM 9.1절) Note over Bank: Sweeping 정책 평가
임계값(예: 10 BTC 상당) 초과? alt 임계값 미만 Note over WOPS: 현 잔고 유지 · 다음 배치 재평가
동일 주소로 계속 수신 else 임계값 초과 — W-COLD Sweeping Bank->>WOPS: 스윕 API 호출 (초과분만, P2P Network) Note over WOPS: P2P 대기열 등록 → TAP 평가 WOPS->>SGX: 서명 요청 SGX->>CB: 룰 검증 요청 Note over CB: 금액 · 목적지 워크스페이스
· 시간 · 사용자 평가 CB-->>SGX: APPROVE Note over SGX: Enclave 내부 MPC Key Share 서명
(키 미유출) SGX-->>WOPS: 서명본 반환 Note over WOPS: 클라우드 Share 결합 →
W-OPS 측 서명 완성 WOPS->>WCOLD: P2P 수신 요청 Note over WCOLD: Admin Quorum 승인
고객 Vault 수신
온체인 트랜잭션 없음 end
BTC 3~6 / ETH 12~20 confirm WOPS->>Bank: CONFIRMED Webhook Note over Bank: 원장 갱신 · 고객 알림
감사 로그 (SIEM 9.1절) Note over Bank: Sweeping 정책 평가
임계값(예: 10 BTC 상당) 초과? alt 임계값 미만 Note over WOPS: 현 잔고 유지 · 다음 배치 재평가
동일 주소로 계속 수신 else 임계값 초과 — W-COLD Sweeping Bank->>WOPS: 스윕 API 호출 (초과분만, P2P Network) Note over WOPS: P2P 대기열 등록 → TAP 평가 WOPS->>SGX: 서명 요청 SGX->>CB: 룰 검증 요청 Note over CB: 금액 · 목적지 워크스페이스
· 시간 · 사용자 평가 CB-->>SGX: APPROVE Note over SGX: Enclave 내부 MPC Key Share 서명
(키 미유출) SGX-->>WOPS: 서명본 반환 Note over WOPS: 클라우드 Share 결합 →
W-OPS 측 서명 완성 WOPS->>WCOLD: P2P 수신 요청 Note over WCOLD: Admin Quorum 승인
고객 Vault 수신
온체인 트랜잭션 없음 end
8.2 출금 플로우 (Withdrawal)
▸ 개발자용 상세 — 출금 시퀀스 (펼쳐보기)
sequenceDiagram
autonumber
actor Cust as 고객
participant Bank as 은행
participant WOPS as W-OPS (핫·웜)
participant SGX as SGX Co-Signer
participant CB as 콜백 핸들러
participant WCOLD as W-COLD (콜드)
actor Signer as Signer (에어갭)
actor Approver as Approver (온라인)
Cust->>Bank: 출금 요청 — 목적지·금액·자산·2FA
(세션·IP·기기 지문 기록) Note over Bank: 사전 검증
KYC/AML · Travel Rule · 한도
화이트리스트 · 컴플라이언스 룰 Note over Bank: 금액 티어 판단 (8.3절)
→ Hot(소액) / Cold(대액) alt 소액 — Hot 경로 (W-OPS 자동 서명) Bank->>WOPS: Tx 생성 API (W-OPS vault · 목적지 · 금액) Note over WOPS: 대기열 등록 → TAP 평가
화이트리스트 · 한도 · 업무시간 WOPS->>SGX: 서명 요청 SGX->>CB: 룰 검증 요청 Note over CB: 위험 스코어 · 이상 패턴
내부 권한 · 이중 승인 조건 CB-->>SGX: APPROVE / REJECT Note over SGX: Enclave 내부 MPC Key Share 서명
(키 미유출) SGX-->>WOPS: 서명본 반환 Note over WOPS: 클라우드 Share 결합 → MPC 완성
Fireblocks 노드로 온체인 브로드캐스트 else 대액 — Cold 경로 (W-COLD 수동·에어갭) Bank->>WCOLD: Tx 생성 API (W-COLD vault · 목적지 · 금액) Note over WCOLD: 콘솔 Pending Tx · QR 코드 표시
(8시간 유효) WCOLD->>Signer: QR 표시 Note over Signer: Signing Room 2인 입실 (CCTV)
QR 스캔 · 목적지·금액 육안 확인
PIN + 생체 → Approve Signer-->>WCOLD: 응답 QR → 콘솔 웹캠 업로드 WCOLD->>Approver: 승인 요청 (TAP 정책) Note over Approver: 1~2명 (Signer와 다른 인력, SoD)
모바일 앱 생체 인증 → Approve Approver-->>WCOLD: Approve Note over WCOLD: Share 조합 (클라우드 + iOS + 백업)
MPC 서명 완성 → 온체인 브로드캐스트 end rect rgb(237, 245, 237) Note over WOPS,Bank: 공통 후처리 — Hot·Cold 모두 WOPS-->>Bank: CONFIRMED Webhook (Hot 경로) WCOLD-->>Bank: CONFIRMED Webhook (Cold 경로) Note over Bank: 잔고 차감 · Tx 해시·수수료 기록
SIEM 7년 아카이브 (9.1절)
고객 통보 · 이상 감지 알림 (9.2절) end
(세션·IP·기기 지문 기록) Note over Bank: 사전 검증
KYC/AML · Travel Rule · 한도
화이트리스트 · 컴플라이언스 룰 Note over Bank: 금액 티어 판단 (8.3절)
→ Hot(소액) / Cold(대액) alt 소액 — Hot 경로 (W-OPS 자동 서명) Bank->>WOPS: Tx 생성 API (W-OPS vault · 목적지 · 금액) Note over WOPS: 대기열 등록 → TAP 평가
화이트리스트 · 한도 · 업무시간 WOPS->>SGX: 서명 요청 SGX->>CB: 룰 검증 요청 Note over CB: 위험 스코어 · 이상 패턴
내부 권한 · 이중 승인 조건 CB-->>SGX: APPROVE / REJECT Note over SGX: Enclave 내부 MPC Key Share 서명
(키 미유출) SGX-->>WOPS: 서명본 반환 Note over WOPS: 클라우드 Share 결합 → MPC 완성
Fireblocks 노드로 온체인 브로드캐스트 else 대액 — Cold 경로 (W-COLD 수동·에어갭) Bank->>WCOLD: Tx 생성 API (W-COLD vault · 목적지 · 금액) Note over WCOLD: 콘솔 Pending Tx · QR 코드 표시
(8시간 유효) WCOLD->>Signer: QR 표시 Note over Signer: Signing Room 2인 입실 (CCTV)
QR 스캔 · 목적지·금액 육안 확인
PIN + 생체 → Approve Signer-->>WCOLD: 응답 QR → 콘솔 웹캠 업로드 WCOLD->>Approver: 승인 요청 (TAP 정책) Note over Approver: 1~2명 (Signer와 다른 인력, SoD)
모바일 앱 생체 인증 → Approve Approver-->>WCOLD: Approve Note over WCOLD: Share 조합 (클라우드 + iOS + 백업)
MPC 서명 완성 → 온체인 브로드캐스트 end rect rgb(237, 245, 237) Note over WOPS,Bank: 공통 후처리 — Hot·Cold 모두 WOPS-->>Bank: CONFIRMED Webhook (Hot 경로) WCOLD-->>Bank: CONFIRMED Webhook (Cold 경로) Note over Bank: 잔고 차감 · Tx 해시·수수료 기록
SIEM 7년 아카이브 (9.1절)
고객 통보 · 이상 감지 알림 (9.2절) end
8.3 출금 제한 설계
| 구분 | 임계값 예시 | 처리 경로 |
|---|---|---|
| 초소액 | < 0.01 BTC 상당 | W-OPS 자동 |
| 소액 | 0.01 ~ 1 BTC | W-OPS Warm 수동 승인 |
| 중액 | 1 ~ 10 BTC | W-COLD Signer 1 + Approver 1 |
| 대액 | ≥ 10 BTC | W-COLD Signer 2 + Approver 2 + 시간 지연 |
| 초대액 | 사전 고지 필수 | W-COLD + 실사 + Admin Quorum |
임계값은 서비스 규모·가격 변동·규제 준수 상황에 맞게 주기적 조정
9. 모니터링·감사·컴플라이언스
9.1 로깅 · 감사
- Fireblocks Audit Log → Webhook으로 외부 SIEM 전송
- 모든 트랜잭션·승인·구성 변경·로그인 이벤트 수집
- 7년간 장기 보관 (국내 규제 요건)
- 고객사 SIEM: Datadog · Splunk · ELK 등 자체 선택
9.2 실시간 알림 트리거
| 이벤트 | 알림 대상 | 채널 |
|---|---|---|
| TAP BLOCK 발생 | 보안팀 + 컴플라이언스 | Slack + 이메일 |
| 임계값 초과 출금 시도 | CISO + 관리자 | Slack + SMS |
| Signer 서명 실패 3회 | 보안팀 | PagerDuty |
| 워크스페이스 구성 변경 | 전체 Admin | 이메일 |
| Signer 키 용량 10% 미만 | IT · 보안팀 | Slack (재프로비저닝 예약) |
| 로그인 지역 이상 | 보안팀 | Slack + SMS |
9.3 정기 보고서
- 일일: 잔고·입출금 총계
- 주간: 고객별 거래 이상치 탐지
- 월간: Proof of Reserves 계산 · 감사팀 제출
- 분기: 사용자 접근 권한 재검토
- 연간: DR 리허설 보고 · 규제 당국 제출
10. 재해 복구(DR) 아키텍처
10.1 등급별 대응
| 등급 | 시나리오 | 대응 |
|---|---|---|
| L1 | 특정 Signer 부재 (휴가·병가) | 다른 Signer로 교대 (최소 3명 유지) |
| L2 | Signer 기기 분실 | Soft Recovery — 신규 Signer 온보딩 후 이전 삭제 |
| L3 | Owner 기기 분실 | Owner 복구 절차 (지원팀 + 복구 패스프레이즈) |
| L4 | 의심 침해 | Workspace Freeze 즉시 발동 (발신 차단, 수신 허용) |
| L5 | 전체 인프라 손상 | Hard Recovery — 복구 키트 + fireblocks-key-recovery-tool |
10.2 RTO/RPO
- RPO: 0 (MPC 특성상 데이터 손실 없음 - 온체인 상태는 보존)
- RTO:
- L2: 1~2일
- L3: 3~5일
- L5: 수 일~1주 (테스트넷 리허설 경험에 따라 단축 가능)
10.3 워크스페이스 Freeze 절차
- 손상 의심 감지 → 보안팀 에스컬레이션
- Owner 또는 Non-Signing Admin이 즉시 Freeze 발동
- 모든 사용자 역할이 Viewer로 자동 변경 → 발신 차단
- 수신은 계속 (고객 입금 중단 회피)
- Fireblocks 지원팀 + 포렌식 팀에 보고
- 근본 원인 파악 후 Unfreeze 또는 신규 워크스페이스 마이그레이션
11. 물리 보안 및 인력 배치
11.1 디바이스 보관
| 디바이스 | 보관 위치 | 접근 권한 |
|---|---|---|
| Owner iOS | 본사 Tier-3 금고 (내화·생체) | Owner + CISO (2-of-2) |
| Signer iOS (각자) | 개인 금고 또는 팀 금고 | 본인 전용 |
| macOS 프로비저닝 PC | 격리 클린룸 | Security Manager |
| 복구 카드 (Owner) | 은행 대여금고 + 제3자 수탁 | Owner + 법무팀 |
| Workspace Backup Kit | 본사 금고 + DR 사이트 | Owner + IT Lead |
11.2 공간 요구사항
- Signing Room: 콘솔 PC + 웹캠, Signer iOS 일시 반입, 녹화 CCTV
- Provisioning Room: macOS + Apple Configurator, 에어갭 물리 분리
- Safe Vault: 디바이스 장기 보관, 내화·방도, 이중 잠금
- DR Site: 본사와 타지역, 별도 권한자 관리
11.3 인력 요건
- 2인 통제(Two-Person Integrity) — 금고 접근·디바이스 반출 시 필수
- 퇴사자 처리: 24시간 이내 접근 해지 + 영향 디바이스 재프로비저닝
- 교차 훈련: 모든 Signer·Admin은 DR 절차 숙지
- 정기 훈련: 반기별 복구 훈련 필수 참여
12. 한국 규제 매핑
| 규제 요구사항 | 본 아키텍처 대응 |
|---|---|
| 이용자 자산 분리 보관 | 고객별 Segregated Vault (4절) — 회사 자산과 물리 분리 |
| 콜드월렛 80% 이상 보관 | W-COLD에 자산 대부분 배치 (3.2절), W-OPS 최소화 |
| 해킹·전산사고 대비 예치·보험 | 별도 준비 (Fireblocks 자체 기능 아님) — 외부 보험사 계약 |
| 안전한 키 관리 | MPC-CMP + 에어갭 + 다변화 백업 (7절) |
| 출금 통제 | TAP 레이어드 정책 + 화이트리스트 + 다중 승인 (6절, 8절) |
| 내부통제 기준 | 역할 분리 (5절) + Admin Quorum (5.3절) + 감사 로그 (9절) |
| 이상거래 탐지 의무 | 실시간 알림 (9.2절) + SIEM 연동 |
| 7년 거래기록 보관 | 외부 아카이브 (9.1절) |
| ISMS-P 기술 요구사항 | TAP + 감사 로그 + 접근 통제로 대응 |
12.1 HSM 관련 참고
- 국내 규제는 HSM을 의무화하지 않음 — MPC로 대체 가능 (Fireblocks 클라우드 키 쉐어는 HSM 보호)
- FIPS 140-2 수준 자체 HSM을 추가 운영하는 경우는 리스크 다변화 목적
13. 초기 구축 로드맵
Phase 1: 사전 준비 (4~6주)
- [ ] Fireblocks 계약 · 콜드 월렛 워크스페이스 명시
- [ ] CSM 온보딩 세션 예약
- [ ] 하드웨어 구매 (iOS 기기 3~5대, macOS 프로비저닝 PC, 웹캠 PC)
- [ ] 물리 보안 공간 설계 · 금고 설치
- [ ] 역할 담당자 지정 (Owner, Signer 3명, Admin 2명, Security Manager 1명)
Phase 2: 워크스페이스 프로비저닝 (2~3주)
- [ ] W-OPS 프로비저닝 (API Co-Signer 포함)
- [ ] W-COLD 프로비저닝 (Owner 디바이스 온보딩 → Signer 디바이스 온보딩)
- [ ] 복구 패스프레이즈 생성 · 금속 카드 각인 · 분산 보관
- [ ] Workspace Key Backup Recovery Kit 생성
Phase 3: 정책 및 연결 (2주)
- [ ] P2P Network 연결 (W-OPS ↔ W-COLD)
- [ ] TAP 정책 테스트넷에서 검증 → 프로덕션 적용
- [ ] 화이트리스트 주소 초기 등록
- [ ] Sweeping 규칙 구성
Phase 4: 통합 및 감사 (2~3주)
- [ ] 백엔드 Fireblocks API 연동
- [ ] Webhook → SIEM 파이프라인 구축
- [ ] 실시간 알림 룰 작성
- [ ] 고객별 Vault 생성 자동화
Phase 5: 운영 리허설 (2주)
- [ ] 내부 테스트 거래 (소액 → 중액 → 대액)
- [ ] DR 리허설 (Soft Recovery · Verify Passphrase)
- [ ] 런북(Runbook) 작성 · 전원 훈련
- [ ] 보안 감사 · 외부 감사 준비
Phase 6: 제한 서비스 → 정식 오픈
- [ ] 내부 관계자 대상 소규모 베타
- [ ] 점진적 고객 온보딩
- [ ] 월별 Proof of Reserves 시작
- [ ] 분기별 정책 재검토 사이클 시작
부록: 체크리스트 요약
런북에 포함할 핵심 체크리스트는 fireblocks-cold-wallet-research 9절를 참조.