지갑 서명 요청 뜻, 로그인처럼 보여도 권한 범위를 읽어야 하는 이유
페이지 정보
본문
지갑 서명 요청을 처음 보면 가장 헷갈리는 부분은 가스비다. 코인을 보내는 거래라면 네트워크 수수료가 보여야 할 것 같은데, 어떤 팝업은 수수료 없이 서명만 요구한다. 그래서 “돈이 안 나가니 안전한 로그인인가”와 “지갑으로 누르는 것이니 바로 위험한가”가 같이 떠오른다.
정답은 둘 중 하나로 고정되지 않는다. 서명은 항상 온체인 전송은 아니지만, 그렇다고 안전 보증서도 아니다. 지갑 주소의 사용자가 특정 메시지에 동의했다는 증거를 만드는 일이고, 그 메시지가 무엇을 말하는지에 따라 의미가 달라진다.
서명은 전송과 다르다
일반적인 전송 거래는 네트워크에 올라가고, 수수료를 내며, 잔고나 스마트컨트랙트 상태를 바꾼다. 반면 지갑 서명은 메시지에 내 주소의 서명을 붙이는 일일 수 있다. 이 경우 그 자체로 ETH나 토큰이 바로 이동하지 않을 수 있고, 가스비도 없을 수 있다.
MetaMask가 설명하는 Sign-In with Ethereum 흐름도 이쪽에 가깝다. 사이트가 이메일 계정 대신 지갑 주소의 사용자인지 확인하려고 메시지 서명을 요청하는 방식이다. EIP-4361도 이런 로그인 메시지에 도메인, 주소, 요청 범위, 세션 정보, nonce 같은 항목을 담아 더 일관되게 읽도록 만든 표준이다.
하지만 “전송이 아니다”는 말이 “아무렇게나 눌러도 된다”는 뜻은 아니다. 서명은 내가 어떤 문장에 동의했다는 증거로 남는다. 특히 낯선 사이트가 길고 복잡한 메시지를 띄우거나, 지갑 화면에서 요청 목적이 잘 보이지 않는다면 먼저 멈춰야 한다.
로그인 서명과 토큰 권한
로그인 서명은 보통 이 주소를 쓰는 사람이 맞는지 확인하는 쪽에 가깝다. 이름 그대로 사이트 로그인에 쓰일 수 있고, 제대로 구성된 요청이라면 어떤 사이트에서 어느 주소로 로그인하는지, 언제 만든 요청인지가 메시지 안에 드러난다.
토큰 승인은 결이 다르다. 디앱이 내 토큰을 대신 옮길 수 있게 허락하는 온체인 권한이고, 보통 approve 같은 화면으로 나타난다. 이 권한은 한 번 남으면 나중에 다시 쓰일 수 있어 토큰 승인 취소처럼 별도 정리가 필요할 수 있다.
문제는 실제 화면에서 connect, sign, approve, send가 모두 비슷한 팝업처럼 보인다는 점이다. 그래서 “서명 요청이니까 괜찮다”거나 “모든 서명이 토큰 이동 권한이다”라고 외우면 둘 다 틀릴 수 있다. 지갑 연결은 사이트가 내 주소를 보는 일이고, 로그인 서명은 주소 소유를 증명하는 일이며, 토큰 승인은 스마트컨트랙트가 토큰을 움직일 수 있는 권한을 여는 일이다.
팝업에서 먼저 볼 문장
서명 요청 앞에서는 버튼보다 문장을 먼저 봐야 한다. 요청한 사이트의 주소가 내가 방문한 곳과 맞는지, 표시된 지갑 주소가 내가 쓰려는 주소인지, 메시지가 단순 로그인인지 주문·위임·토큰 이동 같은 권한을 암시하는지 나눠 읽는다.
구조화된 서명은 이 구분을 조금 더 읽기 쉽게 만들 수 있다. EIP-712는 단순한 긴 문자열 대신 항목이 나뉜 데이터에 서명하는 방식을 설명한다. 독자 입장에서는 표준 이름을 외우는 것보다, 지갑 화면에 보이는 domain, 만료 시간, nonce, 요청 범위가 낯선 사이트와 맞물려 있지 않은지 보는 습관이 더 중요하다.
짧게 보면 순서는 이렇다.
- 요청한 사이트와 현재 보고 있는 사이트가 같은지
- 서명하는 지갑 주소가 맞는지
- 메시지가 로그인 확인인지, 주문·위임·토큰 이동 권한인지
- 만료 시간이나 nonce처럼 재사용을 막는 흔적이 있는지
- approve나 allowance처럼 토큰 이동 권한을 여는 화면은 아닌지
- 이해하지 못한 문장인데도 “가스비 없음”만 보고 누르려는 것은 아닌지
이 중 하나라도 이상하면 취소하는 편이 낫다. 정상 서비스도 서명을 요구할 수 있지만, 정상 서비스라면 사용자가 무엇에 서명하는지 설명할 수 있어야 한다.
이미 눌렀다면 나눠서 정리
이미 서명을 눌렀다고 해서 무조건 코인이 빠져나간 것은 아니다. 먼저 실제 전송 기록이 있는지, 토큰 승인 기록이 남았는지, 사이트 연결 세션이 살아 있는지를 나눠 본다. 지갑 연결 해제는 사이트와의 연결을 끊는 일이고, 토큰 승인 취소는 온체인 권한을 줄이거나 없애는 일이라 같은 버튼으로 끝나지 않을 수 있다.
MetaMask의 서명 피싱 안내가 말하는 위험도 여기에 있다. 공격자는 사용자가 만든 오프체인 서명을 나중에 악용하려 할 수 있다. 그래서 의심스러운 서명을 눌렀다면 같은 사이트에 다시 접속해 추가 요청을 승인하지 말고, 연결된 사이트와 토큰 승인 상태를 따로 확인하는 편이 안전하다.
시드구문 분실 글에서 보듯 개인키나 복구 문구는 지갑의 최종 열쇠에 가깝다. 서명 요청은 그 열쇠를 직접 보여 주는 일이 아니지만, 열쇠를 가진 사람이 동의했다는 흔적을 만드는 일이다. 또 EIP-7702 지갑 위임처럼 지갑 기능이 넓어질수록 어떤 요청에 어떤 범위를 허락하는지 읽는 습관은 더 중요해진다.
지갑 서명 요청은 무조건 피해야 할 공포 버튼도 아니고, 로그인처럼 가볍게 넘겨도 되는 확인창도 아니다. 코인이 바로 이동하는지보다 먼저 볼 것은 요청한 사이트, 서명할 주소, 메시지 내용, 권한 범위다. 이 네 가지가 설명되지 않는 서명이라면, 수수료가 0으로 보여도 누르지 않는 것이 더 좋은 판단이다.
StableEarning의 글과 데이터는 스테이블코인 금리, 스테이킹, RWA 수익률, 거래소 이용 정보를 이해하기 위한 참고 자료입니다. 수익률, 수수료, 입출금, 상품 제공 여부는 거래소와 발행사 정책, 네트워크 상태, 거주지와 계정 조건에 따라 달라질 수 있으며 원금 손실, 가격 변동, 출금 지연, 스마트컨트랙트와 커스터디 위험이 있을 수 있습니다. 이 글은 정보 제공용이며 특정 자산 매수, 예치, 스테이킹, 전송, 투자 실행을 권유하지 않습니다. 실제 실행 전에는 공식 공지와 본인 계정 조건을 다시 확인해야 합니다.