메인 콘텐츠로 건너뛰기

개요

AgentWallex의 모든 에이전트 지갑은 다자간 연산(MPC)으로 보호됩니다. 전체 개인 키는 절대 재구성되지 않습니다 — 메모리에서도, 디스크에서도, 어디에서도. 대신 암호학적 키 샤드가 세 개의 독립적인 당사자에게 분배되며, 두 당사자가 협력하여 거래에 서명할 수 있습니다.

MPC 작동 방식

기존 지갑은 단일 개인 키를 저장합니다. 해당 키가 도난되면 모든 자금이 손실됩니다. MPC는 이러한 단일 장애점을 제거합니다.

2-of-3 임계값 서명

AgentWallex는 Paratro의 2-of-3 임계값 MPC 프로토콜을 사용합니다. 세 개의 키 샤드가 생성되며 두 개면 유효한 서명을 생성할 수 있습니다:
샤드보유자역할
샤드 1AgentWallex 서명 서비스활성 서명 참여자
샤드 2독립 커스터디 노드활성 서명 참여자
샤드 3콜드 스토리지복구 및 재해 복구
정상 운영 시 샤드 1과 샤드 2가 협력하여 거래에 서명합니다. 샤드 3은 오프라인으로 유지되며 복구 시나리오에서만 사용됩니다.

보안 속성

  • 단일 유출 지점 없음 — 공격자는 두 개의 독립적인 시스템을 동시에 침해해야 합니다.
  • 키 재구성 없음 — 전체 개인 키는 단일 위치에서 조립되지 않습니다.
  • 전방 비밀성 — 정기적인 샤드 교체(사전 비밀 공유)가 이전 샤드를 무효화합니다.
  • 동일한 지갑 주소 — 샤드 교체는 지갑의 온체인 주소를 변경하지 않습니다.

키 생성

키는 분산 키 생성(DKG)을 사용하여 생성됩니다:
1

랜덤 공유 생성

3개의 MPC 노드 각각이 독립적으로 랜덤 공유를 생성합니다.
2

공개 키 도출

공유가 암호학적으로 결합되어 공개 키(및 해당 지갑 주소)를 생성합니다.
3

샤드 배포

각 노드는 자체 샤드만 보유합니다. 전체 개인 키는 존재하지 않습니다.
// When you create an agent, DKG happens automatically
const agent = await aw.agents.create({
  name: "my-agent",
  chain: "eip155:8453",
});

// The wallet address is derived from the distributed public key
console.log(agent.wallet.address); // 0x...

키 교체

키 샤드는 사전 비밀 공유라는 기법을 사용하여 주기적으로 교체됩니다. 이 프로세스는:
  1. 동일한 공개 키에 대응하는 새 샤드를 생성합니다.
  2. 새 샤드를 세 당사자 모두에게 배포합니다.
  3. 이전 샤드를 파기합니다.
교체 후에는 공격자가 이전에 샤드를 탈취했더라도 암호학적으로 무용지물이 됩니다.
키 교체는 자동으로 이루어지며 개발자의 조치가 필요하지 않습니다. 지갑 주소는 동일하게 유지됩니다.

긴급 동결

승인된 당사자는 에이전트의 지갑을 즉시 동결하여 모든 거래를 방지할 수 있습니다:
// Freeze — immediate, no transactions can be signed
await aw.agents.freeze("agent_abc123");

// Unfreeze — subject to mandatory cool-down period
await aw.agents.unfreeze("agent_abc123");
지갑을 동결한 후에는 해제하기 전에 필수 10분 쿨다운 기간이 있습니다. 이는 공격자가 지갑을 동결 후 즉시 다시 활성화하는 것을 방지합니다.

인프라 안전망

개발자가 구성한 정책 외에도 Paratro는 API 호출로 재정의할 수 없는 MPC 서명 레벨의 하드 리밋을 적용합니다:
제어 항목기본값
절대 일일 상한$50,000
이상 탐지ML 기반, 항상 활성화
긴급 동결항상 사용 가능
쿨다운 기간동결 후 10분
이러한 한도는 API 키가 유출되거나 비즈니스 레이어 정책이 잘못 구성된 경우에도 최후의 방어선 역할을 합니다.