보안
CentraFIN이 보는 것과 보지 않는 것, API 키와 지갑을 보호하는 방법, 취약점을 신고하는 방법을 알려 드려요.
CentraFIN은 저희 서버에서 정보가 유출되더라도 누구도 내 돈에 손대거나 개인 지갑을 알아낼 수 없도록 설계했어요.
저희 서버가 보는 것
| 데이터 | 저희 서버 |
|---|---|
| 플랫폼의 잔고, 포지션, 주문, 내역 | 봐요. 수치를 보여 주고 계산하는 데 필요해요 |
| API 키의 시크릿 | 암호화해서 보관해요(AES-256-GCM). 되돌려 보내거나, 화면에 보여 주거나, 로그에 남기지 않아요 |
| Hyperliquid 계정 주소 | 봐요. 계정을 읽는 데 쓰여요 |
| 비트코인 지갑의 공개키, 주소, 이름, 잔고 | 절대 보지 않아요. 브라우저가 암호화해요 |
| 개인키와 복구 구문 | 절대 받지 않아요. 서비스가 어떤 것도 받지 않아요 |
| 비밀번호 | 서비스는 비밀번호를 쓰지 않아요. 패스키와 일회용 코드를 써요 |
읽기 전용 키
- CentraFIN은 주문도, 이체도, 출금도 하지 않아요.
- Coinbase와 OKX: 새 키는 모두 플랫폼에 확인해요. 거래, 이체, 출금이 가능한 키는 거부해요.
- Kraken: 플랫폼이 이런 확인을 지원하지 않아요. 키 추가 창에서 체크해야 할 권한만 안내해요.
- Hyperliquid: 키가 필요 없어요. 계정은 공개 주소로 읽고, API 지갑 주소는 거부해요.
- Interactive Brokers: Flex 보고서 토큰을 써요. 이 토큰으로는 거래 명세서에만 접근할 수 있어요.
- 시크릿은 서비스 고유의 키로 암호화되고, 키 종류에 묶여 있으며, 저희 서버 밖으로 절대 나가지 않아요.
API 키를 위한 고정 IP 주소
Kraken, Coinbase, OKX, Hyperliquid로 가는 요청은 모두 저희 릴레이의 주소 하나에서 나가요: 130.110.240.91. 플랫폼에서 API 키를 이 주소로 제한해 두면, 키를 도난당해도 다른 곳에서는 쓸 수 없어요.
릴레이는 프랑스에서 호스팅되고, CentraFIN이 서명한 요청만 받으며, 이 플랫폼들만 호출하고, 아무것도 저장하지 않아요. 플랫폼의 응답은 릴레이를 거쳐 가지만, 시크릿은 절대 보지 않아요.
저희가 읽을 수 없는 개인 지갑
- 지갑은 계정의 공개키(xpub, ypub, zpub)로 추가해요. 개인키로는 절대 추가하지 않아요.
- 브라우저가 지갑을 암호화하고(AES-256-GCM), 그 키는 패스키가 보호해요(WebAuthn PRF 확장). 저희 서버는 열 수 없는 암호화된 데이터만 저장해요.
- 잔고는 브라우저가 공개 비트코인 노드(blockstream.info, mempool.emzy.de, mempool.bitaroo.net)에서 직접 읽어요. 블라인드 릴레이를 거치며 종단 간 암호화돼요. 노드는 요청된 주소는 보지만, 내 IP 주소도 계정도 보지 못해요. 각 주소는 항상 같은 노드가 읽기 때문에, 모든 주소를 보는 노드는 없어요.
비밀번호 없는 로그인
- 계정을 만들 때 확인한 이메일 주소로, 요청할 때마다 로그인 링크가 와요. 링크는 15분 동안 한 번만 쓸 수 있고, 열린 페이지의 버튼을 눌러야 쓰여요. 그래서 이메일을 검사하는 소프트웨어가 대신 써 버리지 않아요.
- 패스키(WebAuthn, 사용자 인증 필수), 인증 앱(6자리 코드) 또는 둘 다를 추가할 수 있어요. 인증 앱이 있으면 링크 다음에 그 코드를 요청하고, 패스키만 있으면 링크 다음에 패스키를 요청해요. 이렇게 보호된 계정은 메일함만으로는 열리지 않아요.
- 패스키로는 이메일 없이도 로그인할 수 있어요. 인증 앱도 있다면 그다음에 코드를 요청해요.
- 이메일 주소 하나는 1분에 링크 1개, 1시간에 5개까지 받을 수 있고, IP 주소 하나는 1시간에 10개까지 요청할 수 있어요.
- 코드를 연속 5번 틀리면 계정은 15분 동안 기다려야 하고, 이후 다시 연속으로 틀릴 때마다 대기 시간이 두 배로 늘어나요(최대 하루). 같은 IP 주소는 15분 안에 5번 실패하면 차단돼요.
- 세션은 8시간 동안 유지돼요.
- 계정은 내 로그인 수단으로만 열려요. CentraFIN을 포함해 누구도 그것 없이는 들어갈 수 없어요. 메일함을 잘 보호하고, 패스키를 쓴다면 두 개를 마련해 두세요.
AI 어시스턴트(MCP)
- 어시스턴트는 내가 허용한 경우에만(OAuth 2.1, PKCE) 계정에 접근할 수 있어요. 접근은 읽기 전용이고, 개인 지갑에는 절대 접근하지 못해요.
- 액세스 토큰은 1시간 동안 유효해요. 갱신 토큰은 30일 동안 유효하고, 한 번만 쓸 수 있어요.
- 어시스턴트 권한은 설정에서 언제든 철회할 수 있어요.
사이트 자체
- 서드파티 스크립트, 광고, 방문자 분석 도구가 전혀 없어요.
- 엄격한 콘텐츠 보안 정책을 적용하고, HTTPS 연결만 사용해요.
취약점 신고
제목에 “보안”이라고 적어 contact@centrafin.xyz로 보내 주세요. 발견한 내용, 재현 방법, 확인할 수 있었던 정보를 적어 주세요. 다른 사람의 데이터에 접근하지 말고, 서비스를 방해하지 말고, 공개하기 전에 저희가 고칠 시간을 주세요. 이 규칙은 저희 security.txt 파일에도 있어요.