보안 — 비수탁(non-custodial) 구조
한 줄 원칙
판단도 실행(키·서명·전송)도 이용자 기기의 에이전트에서. 소리트레이딩 서버는 거래 경로에 없습니다.
- API 키는 소리트레이딩 서버로 가지 않습니다. 주문 서명과 전송은 에이전트가 거래소로 직접 합니다.
- 서버는 키를 갖지 않으므로 거래소에 직접 주문을 낼 수 없고, 주문을 대신 내지도 않습니다.
- 소리트레이딩 백엔드가 털려도 서버 혼자서는 에이전트에 명령을 내릴 수 없습니다 — 에이전트는 회원님의 신뢰 기기 서명이 있는 연결만 받습니다.
막지 못하는 것 — 정직하게
"절대 안전"이라고 말하지 않습니다. 남는 위험은 이렇습니다.
- 본인 기기(브라우저) 감염 · 가짜 사이트 피싱 — 신뢰 기기에서 서명하므로, 그 기기나 화면을 쥔 사람은 명령을 낼 수 있습니다. 주소창의 공식 도메인을 확인하세요.
- 키 자체를 도둑맞으면 우리 프로그램을 거치지 않고 쓸 수 있습니다. 그때 남는 건 거래소가 키에 건 제한(출금 권한 없음 · IP 제한)뿐이라, 거래소가 지원하면 IP 제한을 걸어 두세요.
- 내 서버(VPS)가 털리면 — 이용자 책임 영역입니다.
E2E 암호화 원격 조작
브라우저에서 에이전트로 보내는 명령(키 등록 · 실주문 켜기 · 원격 조작)은 종단간 암호화(ECDH P-256 + AES-256-GCM)로 갑니다. 서버는 암호문을 전달만 하고 읽을 수 없습니다. 웹과 에이전트 양쪽에 같은 지문(fingerprint)이 보이는지 확인하면 중간자를 알아챌 수 있습니다.
범위도 적어 둡니다: 이 암호화는 명령에 대한 것입니다. 에이전트가 서버로 보고하는 체결·잔고·성과·로그는 화면에 보여 주기 위해 서버가 받아 저장합니다.
키 안전장치
- 출금 권한 없는 키가 기본입니다. 에이전트는 키를 등록할 때 거래소에 권한을 물어볼 수 있으면 출금 권한이 켜진 키를 거부하고, 물어볼 수 없는 거래소는 "확인 못 함"으로 표시합니다(안전하다고 그리지 않습니다).
- 키는 에이전트 기기에만 암호화되어 저장됩니다. 웹을 거치지 않고 서버(VPS)에서 직접 넣을 수도 있습니다(에이전트 콘솔 명령).
- 출금을 뗄 수 없는 거래소(지갑 키로 서명하는 탈중앙 거래소 등)도 지원합니다. 대신 키를 넣을 때 그 사실을 경고하고 명시적 동의를 받으며, 에이전트는 주문·잔고·포지션처럼 거래에 필요한 기능만 쓰고 출금·이체는 막도록 설계되어 있습니다. 키는 다른 키처럼 에이전트에만 있습니다.
- 탈중앙 거래소는 위임 키(거래만 되는 API 키·에이전트 지갑 — 거래소에서 내 지갑으로 승인해 만듭니다)를 먼저 씁니다. 위임 키가 없는 곳만 거래 자금만 둔 전용 지갑의 개인키를 받습니다. 시드 문구·메인 지갑 키는 받지 않습니다 — 시드처럼 보이는 입력은 웹이 보내기 전에 막고, 에이전트도 거절합니다.
가드레일
실주문은 지갑 크기(= 최대 손실) 를 정하고 실주문을 따로 켜야 나갑니다. 주문 빈도 제한·승인 천장·수동 정지는 그대로 걸립니다.
이용자 서버(VPS)의 보안은 이용자 책임입니다. 출금 권한 없는 키를 쓰고, 거래소가 지원하면 IP 제한을 거세요.