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 로도 저장 금지
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중