바이낸스 API Key는 64자리의 공개 키(Public Key)와 64자리의 비밀 키(Secret Key)로 구성된 키 쌍으로, 퀀트 전략, 거래소 간 차익 거래, 시세 구독 등 자동화된 시나리오에서 사용됩니다. 보관의 핵심 원칙은 권한 최소화, IP 화이트리스트 강제 활성화, 키를 평문으로 저장하지 않는 것입니다. 신규 사용자는 바이낸스 공식 웹사이트의 계정 메뉴 아래에 있는 'API 관리'에서 생성할 수 있으며, 모바일 사용자는 바이낸스 공식 앱의 '더 보기 - API 관리'를 통해 생성할 수 있습니다. 새로운 iOS 기기에서 처음 사용하는 경우 iOS 설치 튜토리얼을 참고하여 기기 활성화를 먼저 완료하세요. 핵심 요약: 가장 중요한 권한은 출금(Withdraw) 권한입니다. 개인 사용자의 99%는 이 권한을 체크할 필요가 없으며, Read와 Trade 권한만 유지하고 IP 화이트리스트를 함께 사용하면 API 유출 시의 손실을 거의 제로에 가깝게 낮출 수 있습니다.
1. API Key의 구성 및 서명 메커니즘
1단계: 키 쌍의 이해
각 API Key는 Base64 문자열 쌍으로 구성됩니다. 공개 키는 요청 헤더에서 신원을 식별하는 데 사용되고, 비밀 키는 로컬에서 서명을 생성하는 데 사용됩니다. 바이낸스 서버는 공개 키와 해당 권한만 저장하며, 비밀 키는 절대 저장하지 않으므로 비밀 키를 분실하면 새로 생성해야만 합니다.
2단계: HMAC-SHA256 서명
프라이빗 API를 호출할 때마다 클라이언트는 요청 파라미터를 사전순으로 정렬하여 쿼리 스트링(Querystring)으로 만든 후, 비밀 키를 이용해 HMAC-SHA256 계산을 수행하여 64자의 16진수(Hex) 서명을 생성해야 합니다. 서버는 동일한 방식으로 다시 계산하여 비교한 후 요청을 허용합니다. 이 메커니즘을 통해 비밀 키가 네트워크상에 직접 노출되는 것을 방지합니다.
3단계: 시간 윈도우(Time Window)
요청에는 타임스탬프(Timestamp) 파라미터가 포함되어야 하며, 기본적으로 5,000밀리초의 오차를 허용합니다(최대 60,000밀리초까지 조정 가능). 허용 범위가 너무 넓으면 재전송 공격(Replay Attack)에 노출될 수 있으므로 기본값을 유지하고 로컬 NTP 시간을 동기화하는 것이 좋습니다.
2. 세 가지 권한의 차이 및 권장 활성화 전략
바이낸스 API 권한은 리스크에 따라 세 단계로 나뉘며, 사용자는 필요에 따라 선택할 수 있습니다:
- Read(읽기): 계정 자산, 거래 내역, 현재 미체결 주문 등을 조회할 수 있습니다. 유출되더라도 정보만 노출될 뿐 자금 손실로 이어지지는 않습니다. 모든 봇, 대시보드, 세무 소프트웨어 등에서 이 권한만 있으면 됩니다.
- Trade(거래): 주문 생성, 취소, 현물/선물 전환 등이 가능합니다. 유출 시 공격자가 자전거래 등을 통해 연결된 계정으로 이득을 취하게 하여 간접적인 손실이 발생할 수 있지만, 자금은 거래소 내에 머물러 있습니다.
- Withdraw(출금): 자산을 온체인 주소로 직접 출금할 수 있습니다. 유출 시 자산이 즉시 사라질 수 있으므로, 일반적인 퀀트 스크립트에서는 절대 활성화하지 않을 것을 강력히 권장합니다.
또한 두 가지 세부 스위치가 더 있습니다. Universal Transfer는 현물에서 선물로의 내부 이체를 제어하고, Margin은 마진 계정을 제어합니다. 현물 전략만 사용하는 경우 모두 기본 비활성 상태로 유지하세요.
API Key 생성 경로는 다음과 같습니다: 계정 센터 → API 관리 → API 생성 → Key 이름 입력(예: 'grid-bot-btc') → 권한 선택 → IP 화이트리스트 입력 → 이메일 및 2FA 이중 인증. 생성 후 비밀 키는 단 한 번만 표시되므로 즉시 오프라인 비밀번호 관리자에 저장해야 합니다.
3. IP 화이트리스트 및 키 교체 전략
아래 표는 사용자 유형별 권장 설정입니다:
| 사용자 유형 | Read | Trade | Withdraw | IP 화이트리스트 | 교체 주기 |
|---|---|---|---|---|---|
| 단순 대시보드 사용자 | 켬 | 끔 | 끔 | 필수 1개 | 180일 |
| 그리드 봇 | 켬 | 켬 | 끔 | 필수 1개 | 90일 |
| 마켓 메이커 | 켬 | 켬 | 끔 | 필수 1~3개 | 60일 |
| 거래소 간 차익 거래 | 켬 | 켬 | 끔 | 필수 2개 | 60일 |
| 기업 수탁 결제 | 켬 | 켬 | 선택적 활성 | 필수 1개 + 이중 승인 | 30일 |
| 일회용 스크립트 | 켬 | 켬 | 끔 | 필수 1개 | 사용 후 즉시 삭제 |
중요 강조 사항: IP 화이트리스트가 활성화되지 않은 API Key는 유출 시 자산 손실을 복구하기 거의 불가능합니다. Trade 권한만 설정했더라도 공격자는 자전거래를 통해 계정 자산을 축소시킬 수 있습니다. IP 화이트리스트를 활성화하면 바이낸스 서버가 모든 요청에서 소스 IP를 확인하며, 목록에 있는 주소만 허용합니다.
키 교체의 의미는 다음과 같습니다: 어느 시점에 키가 실수로 유출되더라도(예: GitHub에 잘못 커밋, 로그 파일 백업 등), 90일 후에는 키가 자동으로 만료되어 공격자가 장기적으로 이용할 수 없게 됩니다. 교체 시에는 새 키를 먼저 생성하고 모든 스크립트를 업데이트한 후 기존 키를 삭제하여, 두 개의 키가 동시에 활성화된 상태를 최소화해야 합니다.
1. 전형적인 시나리오 및 리스크 사례
사례 1: 퀀트 초보자가 공개 저장소에 코드를 잘못 커밋한 경우. GitHub의 비밀 키 스캔 봇은 몇 분 내에 평문 키를 찾아내고, 공격자는 자동화된 스크립트를 사용하여 계정을 제어합니다. 올바른 방법: 비밀 키를 환경 변수나 .env 파일에 넣고 .gitignore에서 해당 파일을 제외하세요.
사례 2: 클라우드 서버 해킹. IP 화이트리스트가 없는 키는 공격자가 서버 설정 파일에서 직접 추출한 후, 전 세계 어디서나 임의의 IP로 거래를 시작할 수 있습니다. IP 화이트리스트를 활성화하면 키가 유출되더라도 비화이트리스트 IP에서의 요청은 거부됩니다.
사례 3: 피싱 웹사이트 유도. 일부 제3자 거래 플랫폼은 API Key 입력을 요구하는데, 상대방이 위조된 인터페이스로 자신의 서버에 업로드하게 하면 키가 기록됩니다. 모르는 제3자 서비스에 비밀 키를 절대 붙여넣지 마세요. 검증된 도구는 OAuth나 거래소 공식 인증을 지원합니다.
사례 4: 내부 직원 유출. 기업 수탁 시나리오에서는 여러 명이 조작해야 할 수 있습니다. 이때는 서브 계정 + 독립 API Key로 권한을 격리하고 액세스 로그 감사를 활성화하는 것이 좋습니다. 직원이 퇴사하거나 보직이 변경될 때 즉시 해당 키를 회수하세요.
리스크 요약: 64자리의 비밀 키가 로컬을 벗어나는 순간 유출된 것으로 간주해야 합니다. 어떠한 화면 녹화, 클라우드 동기화, 채팅 스크린샷도 의도치 않은 노출을 초래할 수 있으므로 보관 과정에서 전자적, 물리적 유출 경로 모두를 경계해야 합니다.
5. FAQ 자주 묻는 질문
Q: API Key 하나를 여러 프로그램에서 동시에 사용할 수 있나요? A: 기술적으로는 가능하지만 권장하지 않습니다. 여러 프로그램이 하나의 키를 공유하면 로그 추적이 어려워지므로, 전략이나 기기마다 별도의 키를 생성하여 이상 행위를 쉽게 파악할 수 있도록 하세요.
Q: IP 화이트리스트에는 고정 IP만 입력할 수 있나요? A: 네, 반드시 공인 고정 IP여야 합니다. 유동 IP를 사용하는 가정용 인터넷의 경우 VPS나 DDNS를 통해 고정된 출구 IP를 확보해야 합니다. 일반적으로 IP 화이트리스트는 최대 20개까지 지원되어 여러 지역의 서버를 커버할 수 있습니다.
Q: 비밀 키를 잊어버리면 어떻게 하나요? A: 비밀 키는 생성 시 단 한 번만 표시되며 다시 확인할 수 없습니다. 기존 키를 삭제하고 새로 생성해야 하며, 기존의 모든 스크립트 설정을 업데이트해야 합니다. 이는 일반적인 비밀번호와의 본질적인 차이점입니다.
Q: API Key의 기본 유효 기간은 얼마인가요? A: 기본적으로 무제한이지만, 바이낸스는 90일 동안 활동이 없는 경우 사용자에게 수동 연장을 요청할 수 있습니다. 자동 만료에 의존하지 말고 90일마다 능동적으로 교체하는 것이 좋습니다.
Q: API Key 유출 후 가장 먼저 해야 할 일은 무엇인가요? A: 즉시 계정의 API 관리 페이지에 접속하여 해당 키를 삭제하고, 화이트리스트를 활성화하여 모든 출금을 차단하세요. 로그인 비밀번호와 2FA를 재설정하고, 최근 거래 내역에 이상 주문이 있는지 확인한 후 필요시 고객센터에 신고하세요.