자동매매 한다고 하면 주변에서 제일 먼저 하는 말이 “API 키 해킹 당하면 어쩌냐”다. 솔직히 말하자면 이 질문에 제대로 답할 수 있는 서비스가 거의 없다는 게 현실이다. 대부분의 자동매매 봇 서비스는 보안에 대해 “우리가 안전하게 관리합니다” 정도의 모호한 답변만 하고 넘어간다. 나는 5년 동안 코인 자동매매를 개발하면서 보안에 가장 많은 시간을 투자한 사람으로서, 이 글에서 API 키 보안의 A부터 Z까지 전부 말하겠다. 겁만 주는 글이 아니라 실제 대응 방법까지 다 담았으니 끝까지 읽어라.
API 키가 뭔데, 왜 위험한가
거래소 API 키는 쉽게 말해 “내 계좌를 프로그램이 대신 조작할 수 있게 해주는 열쇠”다. 바이빗(Bybit), 바이낸스, 업비트 등 모든 거래소가 이 시스템을 제공한다. 개발자들이 자동매매 봇이나 포트폴리오 관리 도구를 만들 수 있게 해주는 것이다.
API 키에는 보통 세 가지 권한이 있다. 읽기(Read) — 잔고 확인, 주문 내역 조회 등. 주문(Trade) — 매수, 매도, 포지션 열기/닫기. 출금(Withdraw) — 다른 지갑으로 코인 송금. 이 세 번째가 문제다. 출금 권한이 포함된 API 키가 유출되면 해커가 내 계좌의 모든 코인을 자기 지갑으로 빼돌릴 수 있다.
실제 사례가 있다. 2023년에 한 유명 트레이딩 봇 서비스의 데이터베이스가 해킹당해서 수천 명의 API 키가 유출됐다. 출금 권한이 포함된 키를 쓰던 유저들은 몇 시간 만에 계좌가 텅 비었다. 반면 주문 권한만 부여했던 유저들은 피해가 전혀 없었다. 이건 실제로 벌어진 일이다. 같은 서비스를 쓰고 있었는데 API 키 권한 설정 하나 차이로 누구는 전 재산을 잃고 누구는 피해 제로였다.
출금 권한 없는 API 키 — 이것만 지키면 된다
제가 직접 겪어보니 API 키 보안의 핵심은 딱 하나다. 출금 권한을 절대로 부여하지 마라. 자동매매에 필요한 건 읽기(Read)와 주문(Trade) 권한뿐이다. 출금은 무슨 일이 있어도 필요 없다.
바이빗에서 API 키 만드는 과정을 예로 들면, API Management 페이지에서 키를 생성할 때 “Withdraw” 체크박스가 있다. 이걸 체크하지 않으면 된다. 30초면 되는 일이다. 그러면 설령 이 키가 유출되더라도 해커가 할 수 있는 최악의 행동은 무의미한 주문을 넣는 것뿐이다. 내 돈이 빠져나가는 건 구조적으로 불가능하다.
“근데 해커가 일부러 불리한 주문을 넣어서 손해를 줄 수도 있지 않냐?” 좋은 질문이다. 이론적으로 가능하지만, 이런 공격으로 수익을 내려면 해커가 내 계좌에서 주문을 넣는 동시에 같은 거래쌍에서 반대 포지션을 잡아야 한다. 유동성이 높은 메이저 코인에서는 한 개인의 주문으로 가격을 움직이기가 거의 불가능하기 때문에 현실적인 위험은 극히 낮다.
또한 바이빗의 경우 API 주문에도 포지션 리밋이 적용되기 때문에, 비정상적으로 큰 주문은 거래소 자체에서 거부한다. 이건 거래소 레벨에서의 추가 안전장치인 셈이다.
AES-256 암호화는 어떤 수준인가
AutoBot에서는 유저의 API 키를 AES-256 암호화로 저장한다. AES-256이 뭐냐면, Advanced Encryption Standard의 256비트 키 버전으로, 현재 지구상에서 가장 강력한 대칭 암호화 알고리즘이다. 미국 NSA(국가안보국)가 기밀(Top Secret) 문서에 사용하도록 승인한 바로 그 암호화다.
수학적으로 AES-256을 무차별 대입(Brute Force)으로 뚫으려면 2^256가지 경우의 수를 시도해야 한다. 이게 얼마나 큰 숫자냐면, 현재 존재하는 모든 슈퍼컴퓨터를 합쳐서 돌려도 우주의 나이보다 긴 시간이 필요하다. 양자 컴퓨터가 실용화되더라도 AES-256은 여전히 안전하다고 암호학자들은 평가한다. Grover 알고리즘으로 양자 공격을 해도 실질적으로 AES-128 수준의 강도가 유지되기 때문이다.
쉽게 비유하면 이렇다. AES-256 암호화된 데이터를 뚫으려면 지구의 모든 모래알 개수보다 더 많은 시도를 해야 한다. 물리적으로 불가능한 수준이다.
솔직히 말하자면 나도 처음에는 “이 정도까지 필요한가?” 싶었다. 하지만 유저들의 실제 자산이 걸려있는 문제에서 보안은 과할 수가 없다. 그래서 가장 높은 수준을 선택했다.
IP 화이트리스트: 삼중 보안의 완성
출금 권한 제거 + AES-256 암호화에 더해서, IP 화이트리스트를 설정하면 보안이 사실상 완벽에 가까워진다. IP 화이트리스트란 “이 IP 주소에서 오는 요청만 허용하겠다”는 설정이다.
바이빗 API 키 생성 시 IP 화이트리스트를 설정하면, AutoBot 서버의 IP에서만 API 요청이 가능하다. 해커가 API 키를 훔쳐가더라도 AutoBot 서버의 IP가 아닌 곳에서는 아예 접근 자체가 차단된다. 열쇠를 훔쳐도 지정된 건물에서만 열리는 열쇠인 셈이다.
이 세 가지를 조합하면 공격 시나리오가 사실상 제로에 수렴한다. 해커가 돈을 빼가려면 첫째 AES-256 암호화를 뚫어야 하고(물리적 불가능), 둘째 AutoBot 서버의 IP를 스푸핑해야 하고(기술적으로 매우 어려움), 셋째 출금 권한이 없으니 돈을 빼갈 방법이 없다(구조적 불가능). 삼중 보안이다.
정리하면 이렇다. 1단계: 출금 권한 없는 API 키 — 돈을 빼갈 수 없음. 2단계: AES-256 암호화 저장 — 키 자체를 탈취할 수 없음. 3단계: IP 화이트리스트 — 허가된 서버 외에서는 접근 불가.
다른 자동매매 서비스와 비교
시중에 나와있는 자동매매 봇 서비스들의 보안 수준을 내가 직접 조사해봤다. 이름은 밝히지 않겠지만, 상당수가 API 키를 평문(Plain Text)으로 저장하고 있었다. 데이터베이스가 뚫리면 유저들의 API 키가 고스란히 노출되는 구조다. 암호화한다고 해도 AES-128을 쓰거나, 심지어 Base64 인코딩(이건 암호화가 아니다)만 하는 곳도 있었다.
제가 직접 겪어보니 보안은 눈에 보이지 않기 때문에 차별화가 어렵다. 유저 입장에서는 “안전합니다”라는 말을 들으면 다 같은 수준이라고 생각하기 쉽다. 하지만 AES-256과 Base64 인코딩의 차이는 은행 금고와 종이 상자의 차이다. 겉에서 보면 둘 다 “보관함”이지만 실질적인 보호 수준은 하늘과 땅 차이다.
한 가지 더 말하면, 서비스가 얼마나 오래 운영됐는지도 중요하다. 신생 서비스는 보안 취약점이 아직 발견되지 않은 것일 수 있다. AutoBot을 선택해야 하는 이유가 바로 여기에 있다. 5년 동안 보안 사고 제로. 이건 우연이 아니라 설계의 결과다.
실전 보안 체크리스트
어떤 자동매매 서비스를 쓰든 반드시 확인해야 할 보안 체크리스트를 정리했다.
필수 사항: API 키에서 출금 권한 비활성화. API 키 암호화 저장 여부 확인(최소 AES-256). IP 화이트리스트 설정 가능 여부. 2FA(이중 인증) 활성화. 거래소 계정 비밀번호와 API 키 비밀번호 분리.
권장 사항: 서비스 운영 기간 및 보안 사고 이력 확인. API 키 주기적 갱신(3개월마다 권장). 소규모 자금으로 먼저 테스트. 서비스의 보안 관련 기술 문서 확인. 서비스 제공자의 연락처 및 대응 체계 확인.
이건 진짜 물건이다 — AutoBot은 위의 모든 항목을 만족한다. 5년 동안 코인 자동매매를 개발하면서 보안에 대해 가장 많이 고민한 결과물이다. godstary.com에서 직접 확인해볼 수 있다. 세팅에 15분, 코딩 지식 불필요, 그리고 업계 최고 수준의 보안. 이게 내가 자신 있게 내놓는 AutoBot이다. 보안이 걱정돼서 자동매매를 못 시작하고 있었다면, 이제 그 걱정은 내려놓아도 된다.

핑백: 코인 선물 거래(Futures) 청산 안 당하는 3가지 법칙 - 코인 자동매매 개발 일대기 - Godstary