Across-group: 1/N OR (각 Admin/Signer 가 자체 3-share set 보유)
모든 signing user 의 set 은 Owner 의 set 에서 derived
Hosted MPC Variant
모델
Customer 측
Fireblocks 측
Default SaaS MPC
1 share (mobile or API Co-Signer)
2 shares (Fireblocks Azure SGX)
Hosted MPC
3 shares (1 Primary + 2 Guard, 모두 SGX)
0 shares
Hosted MPC = customer ownership deployment axis — Fireblocks 는 cryptographic 참여 없음.
DB Schema — Key Lifecycle (auditdb)
-- 키 자체는 forbidden storage. row 는 lifecycle event 만 기록.
CREATE TABLE key_lifecycle (
id BINARY(16) PRIMARY KEY,
workspace_id BINARY(16) NOT NULL,
user_id BINARY(16) NOT NULL,
key_set_id BINARY(16) NOT NULL, -- 한 user 의 3-share set 식별자
event_type ENUM('provisioned', 're-enrolled', 'migrated', 'revoked', 'backup-verified') NOT NULL,
approved_by_owner_user_id BINARY(16), -- provisioning 은 Owner 단독
occurred_at DATETIME(6) NOT NULL,
source_aggregate VARCHAR(64), -- 'add-user', 'device-migration', ...
-- ★ append-only — BEFORE UPDATE / DELETE 트리거로 강제
KEY (workspace_id, user_id, occurred_at)
);
-- 절대 컬럼 X: private key, MPC share material, recovery passphrase, RSA private key
-- → 어떤 컬럼에도 plaintext 또는 cipher 로도 저장 금지 (Stage 23 참조)
Key Share Derivation 이벤트
이벤트
인증 강도
출처
Add user (signing role)
Owner 단독 MPC key share derivation 별도 승인
add-users.md, p.1
Re-enroll device
Owner 재승인 (2-day window) + 사용자 재등록 (2-day window)
re-enroll-a-users-mobile-device.md, p.1
Device migration
사용자 본인 self-service, 관리자 승인 없이 PIN+passphrase+biometric 3중