Share
카테고리 Study Log

지갑 서명은 무엇이고, 왜 조심해야 할까?

작성자 whaleroad · 2026년 06월 28일

암호화폐 피싱을 공부하다 보니 계속 걸리는 단어가 있었다.

서명.

지갑을 사용할 때 “서명하세요”, “승인하세요”, “확인하세요” 같은 버튼을 누르게 되는 경우가 있다.

처음에는 이 서명이 단순한 로그인 확인이나 동의 버튼처럼 느껴졌다.
웹사이트에서 약관 동의 버튼을 누르거나, 은행 앱에서 인증하는 것과 비슷하다고 생각했다.

하지만 암호화폐 지갑에서의 서명은 생각보다 훨씬 중요할 수 있다.

어떤 서명은 단순히 내가 이 지갑의 소유자임을 증명하는 용도일 수 있다.
하지만 어떤 서명은 내 자산을 이동시키거나, 특정 스마트컨트랙트에 권한을 주는 행위일 수도 있다.

즉 지갑 서명은 단순한 확인 버튼이 아닐 수 있다.

이번 글에서는 지갑 서명이 무엇이고, 왜 조심해야 하는지 기초적인 수준에서 정리해보려 한다.

오늘의 질문

오늘의 질문은 이것이다.

지갑 서명은 무엇이고, 왜 조심해야 할까?

조금 더 나누어보면 이런 질문이 된다.

블록체인에서 서명은 무슨 뜻일까?
왜 거래를 보낼 때 서명이 필요할까?
로그인 서명과 거래 서명은 무엇이 다를까?
토큰 승인은 왜 위험할 수 있을까?
서명만 했는데 자산이 빠져나갈 수도 있을까?
초보자는 지갑 서명 요청을 어떻게 확인해야 할까?

이번 글에서는 이 질문들을 공부해보려 한다.

서명은 내가 승인했다는 증거다

블록체인에서 서명은 내가 어떤 행동을 승인했다는 증거에 가깝다.

은행에서는 계좌 이체를 할 때 비밀번호, 인증서, 생체인증, OTP 같은 절차를 거친다.

블록체인에서는 개인키를 이용해 거래나 메시지에 서명한다.

이 서명은 네트워크나 서비스가 확인할 수 있다.

“이 거래는 해당 지갑의 개인키를 가진 사람이 승인한 것이다.”

이렇게 증명하는 역할을 한다.

중요한 점은 개인키 자체를 공개하지 않고도, 내가 그 개인키를 가지고 있다는 것을 증명할 수 있다는 것이다.

그래서 블록체인에서는 서명이 매우 중요한 역할을 한다.

누가 실제 사람인지보다, 누가 해당 지갑의 개인키로 서명할 수 있는지가 중요하다.

거래 서명은 자산 이동과 연결될 수 있다

가장 기본적인 서명은 거래 서명이다.

예를 들어 내가 10 USDC를 다른 주소로 보내려고 한다고 하자.

지갑은 전송할 주소, 금액, 네트워크 수수료 같은 정보를 담은 거래를 만든다.
사용자는 이 거래를 확인하고 서명한다.
서명된 거래는 블록체인 네트워크로 전송된다.
네트워크는 서명이 유효한지 확인하고 거래를 처리한다.

이 경우 서명은 자산 이동을 승인하는 행위다.

따라서 지갑에서 전송 서명 요청이 뜨면 반드시 내용을 확인해야 한다.

어떤 토큰을 보내는지,
얼마를 보내는지,
어느 주소로 보내는지,
네트워크 수수료는 얼마인지 확인해야 한다.

서명은 단순한 확인이 아니라, 실제 자산 이동의 시작일 수 있다.

메시지 서명은 로그인처럼 쓰일 수 있다

모든 서명이 자산 이동을 의미하는 것은 아니다.

어떤 사이트는 지갑 로그인을 위해 메시지 서명을 요청한다.

예를 들어 “이 지갑 주소의 소유자가 맞는지 확인하기 위해 서명하세요”라는 방식이다.

사용자는 특정 메시지에 서명하고, 사이트는 그 서명을 확인해서 사용자가 해당 지갑을 통제하고 있다는 것을 알 수 있다.

이 방식은 비밀번호 없이 지갑으로 로그인하는 데 사용될 수 있다.

메시지 서명은 보통 블록체인에 거래를 보내지 않는다.
따라서 가스비가 들지 않는 경우도 많다.

하지만 메시지 서명도 무조건 안전하다고 생각하면 안 된다.

어떤 메시지에 서명하는지, 어떤 사이트에서 요청하는지 확인해야 한다.

특히 사람이 읽기 어려운 서명 내용이나, 출처를 모르는 사이트의 서명 요청은 조심해야 한다.

지갑 연결과 서명은 다르다

지갑 사용에서 자주 헷갈리는 것이 지갑 연결과 서명이다.

지갑 연결은 보통 웹사이트가 내 지갑 주소를 확인하는 과정이다.

사이트가 내 주소를 보고, 해당 주소의 잔액이나 보유 NFT, 토큰 정보를 확인할 수 있다.

하지만 지갑 연결만으로 보통 자산이 바로 이동하지는 않는다.

반면 서명은 내가 어떤 행동을 승인하는 과정이다.

단순 메시지 서명일 수도 있고,
거래 실행 서명일 수도 있고,
토큰 사용 권한 승인일 수도 있다.

따라서 지갑 연결보다 서명이 더 중요한 순간이다.

물론 낯선 사이트에 지갑을 연결하는 것 자체도 조심해야 한다.
하지만 진짜 위험은 사용자가 내용을 모른 채 서명하거나 승인할 때 커진다.

토큰 승인은 무엇일까?

암호화폐 지갑에서 특히 중요한 개념이 토큰 승인이다.

영어로는 보통 approve라고 한다.

어떤 디파이 서비스나 스마트컨트랙트가 내 지갑의 특정 토큰을 사용할 수 있도록 허락하는 것이다.

예를 들어 내가 어떤 탈중앙화 거래소에서 USDC를 다른 토큰으로 바꾸려고 한다고 하자.

거래소 스마트컨트랙트는 내 지갑의 USDC를 가져가서 교환을 처리해야 한다.

이때 사용자는 먼저 “이 스마트컨트랙트가 내 USDC를 사용할 수 있도록 허락한다”는 승인을 할 수 있다.

정상적인 서비스에서는 필요한 과정일 수 있다.

하지만 이 권한이 악용되면 위험하다.

사용자가 악성 사이트에 토큰 사용 권한을 승인하면, 공격자가 나중에 내 토큰을 빼갈 수 있다.

특히 무제한 승인이라는 방식은 더 조심해야 한다.

무제한 승인은 왜 위험할까?

토큰 승인에는 한도를 정할 수 있다.

예를 들어 10 USDC만 사용할 수 있게 승인할 수도 있고, 매우 큰 금액 또는 사실상 무제한에 가까운 권한을 승인할 수도 있다.

많은 서비스는 사용자 편의를 위해 무제한 승인을 요청하기도 한다.

한 번 승인하면 이후 거래 때마다 다시 승인하지 않아도 되기 때문이다.

하지만 무제한 승인은 위험할 수 있다.

만약 승인한 스마트컨트랙트가 악성이거나, 나중에 해킹되거나, 피싱 사이트에 잘못 승인했다면 내 지갑의 해당 토큰이 모두 위험해질 수 있다.

사용자는 단순히 “확인”을 눌렀다고 생각했지만, 실제로는 “이 계약이 내 토큰을 가져갈 수 있도록 허락”한 것일 수 있다.

그래서 토큰 승인 요청은 매우 신중하게 봐야 한다.

가능하면 필요한 금액만 승인하는 방식이 더 안전할 수 있다.

서명만 했는데 자산이 빠져나갈 수 있을까?

초보자 입장에서는 이 질문이 가장 무서울 수 있다.

“내가 코인을 보내겠다고 한 적은 없는데, 서명만 했는데 자산이 빠져나갈 수 있을까?”

상황에 따라 가능할 수 있다.

특히 사용자가 악성 거래에 서명했거나, 토큰 사용 권한을 부여했거나, 사람이 읽기 어려운 메시지에 위험한 권한을 포함한 서명을 했을 경우 문제가 생길 수 있다.

예전에는 “메시지 서명은 안전하다”고 단순히 생각하기도 했지만, 지금은 그렇게 단정하기 어렵다.

서명 방식과 내용에 따라 실제 자산 이동 권한과 연결될 수 있기 때문이다.

그래서 중요한 것은 서명의 종류와 내용을 확인하는 것이다.

내가 무엇을 승인하는지 모른다면 서명하지 않는 것이 안전하다.

서명 화면에서 무엇을 확인해야 할까?

지갑 서명 요청이 뜨면 최소한 다음을 확인해야 한다.

첫째, 어떤 사이트에서 요청하는지 확인한다.
공식 사이트가 맞는지, 주소가 이상하지 않은지 확인해야 한다.

둘째, 어떤 행동을 요청하는지 확인한다.
로그인인지, 거래 전송인지, 토큰 승인인지 구분해야 한다.

셋째, 자산 이동이 있는지 확인한다.
보내는 토큰, 금액, 수취 주소를 봐야 한다.

넷째, 토큰 승인 권한인지 확인한다.
어떤 토큰을 어느 스마트컨트랙트에 얼마나 허용하는지 봐야 한다.

다섯째, 가스비가 발생하는지 확인한다.
가스비가 있다는 것은 실제 온체인 거래일 가능성이 있다.

여섯째, 내용이 이해되지 않으면 멈춘다.
서명 내용이 너무 복잡하거나 알 수 없다면 승인하지 않는 것이 안전하다.

이 기본 확인만으로도 많은 위험을 줄일 수 있을 것 같다.

가스비가 없는 서명도 조심해야 한다

가스비가 없으면 안전하다고 생각할 수 있다.

하지만 반드시 그런 것은 아니다.

메시지 서명은 가스비가 들지 않는 경우가 많다.
블록체인에 바로 거래를 보내는 것이 아니라, 내 지갑이 특정 메시지에 서명하는 것이기 때문이다.

하지만 이 서명이 나중에 다른 행동에 사용될 수 있는 경우가 있다.

특히 특정 프로토콜이나 마켓플레이스에서는 서명된 메시지가 주문, 권한, 거래 의사표시로 사용될 수 있다.

따라서 가스비가 없다고 무조건 안전하다고 보면 안 된다.

중요한 것은 가스비 유무가 아니라, 내가 무엇에 서명하는지다.

피싱 사이트는 서명을 교묘하게 위장한다

피싱 사이트는 서명 요청을 아주 그럴듯하게 포장할 수 있다.

“지갑 인증”
“보상 수령”
“에어드롭 클레임”
“보안 업데이트”
“계정 확인”
“거래 활성화”

이런 문구로 사용자를 안심시킨다.

하지만 실제로는 위험한 권한을 요청할 수 있다.

특히 사용자가 서명 내용을 자세히 읽지 않는다는 점을 이용한다.

지갑 화면에 복잡한 데이터가 나오면 많은 사람은 그냥 확인을 누르고 싶어진다.

공격자는 바로 이 습관을 노린다.

그래서 서명 요청이 뜨면 무조건 한 번 멈춰야 한다.

이 사이트를 내가 신뢰할 수 있는가.
지금 이 행동이 꼭 필요한가.
서명 내용이 이해되는가.
큰 금액이 들어 있는 지갑을 연결한 것은 아닌가.

이 질문을 해봐야 한다.

승인 권한은 나중에 취소할 수 있을까?

토큰 승인 권한은 나중에 취소할 수 있는 경우가 있다.

블록체인에는 내 지갑이 어떤 스마트컨트랙트에 어떤 토큰 사용 권한을 줬는지 확인하고, 그 권한을 줄이거나 취소하는 도구들이 있다.

이것을 승인 취소, 권한 철회라고 부르기도 한다.

하지만 초보자에게는 이 과정도 조심해야 한다.

승인 취소 도구를 사칭한 피싱 사이트도 있을 수 있기 때문이다.

또 승인 취소 자체도 블록체인 거래이므로 가스비가 들 수 있다.

그래도 자주 디파이 서비스를 사용하거나 여러 사이트에 지갑을 연결했다면, 주기적으로 승인 권한을 확인하는 습관은 필요해 보인다.

특히 더 이상 사용하지 않는 서비스나 출처가 불분명한 스마트컨트랙트에 권한이 남아 있다면 정리하는 것이 좋을 수 있다.

큰 금액이 들어 있는 지갑은 서명하지 않는 것이 좋을까?

보안 관점에서는 큰 금액이 들어 있는 지갑으로 낯선 사이트에 접속하거나 서명하는 것은 위험하다.

가장 안전한 방식은 용도별로 지갑을 나누는 것이다.

장기 보관용 지갑은 거의 사용하지 않는다.
큰 금액이 들어 있는 지갑은 디파이, NFT, 이벤트 사이트에 연결하지 않는다.
자주 사용하는 서비스에는 소액 지갑을 사용한다.
테스트나 에어드롭 확인은 별도의 테스트 지갑으로 한다.

이렇게 하면 하나의 서명 실수가 전체 자산 손실로 이어지는 위험을 줄일 수 있다.

암호화폐 지갑은 은행 계좌와 달리, 잘못된 서명 하나로 큰 피해가 발생할 수 있다.

따라서 큰 금액을 보관하는 지갑과 자주 서명하는 지갑은 분리하는 것이 합리적으로 보인다.

하드웨어 지갑을 쓰면 안전할까?

하드웨어 지갑은 개인키를 더 안전하게 보관하는 데 도움이 된다.

개인키가 컴퓨터나 브라우저 지갑에 직접 노출되지 않기 때문이다.

하지만 하드웨어 지갑을 쓴다고 모든 위험이 사라지는 것은 아니다.

사용자가 하드웨어 지갑 화면에서 잘못된 거래를 승인하면, 그 거래는 유효한 서명이 될 수 있다.

즉 하드웨어 지갑은 개인키 탈취 위험을 줄여주지만, 사용자가 잘못된 거래를 직접 승인하는 위험까지 완전히 막아주지는 않는다.

그래서 하드웨어 지갑을 사용할 때도 서명 내용을 확인해야 한다.

어느 주소로 보내는지,
어떤 금액인지,
어떤 스마트컨트랙트인지,
무엇을 승인하는지 봐야 한다.

결국 핵심은 도구와 습관이 함께 가야 한다는 것이다.

지갑 서명은 책임 있는 버튼이다

일반 웹사이트에서 확인 버튼을 누르는 것과 지갑에서 서명 버튼을 누르는 것은 다르다.

웹사이트의 확인 버튼은 단순한 UI 동작일 수 있다.
하지만 지갑의 서명 버튼은 자산 이동, 권한 부여, 거래 의사표시와 연결될 수 있다.

그래서 지갑 서명은 책임 있는 버튼이라고 생각해야 한다.

이 버튼을 누르면 어떤 일이 일어나는지 이해하려고 해야 한다.

물론 초보자가 모든 서명 데이터를 완벽히 읽기는 어렵다.

그래서 더더욱 원칙이 필요하다.

공식 사이트가 아니면 서명하지 않는다.
이해하지 못하면 서명하지 않는다.
큰 금액 지갑으로 실험하지 않는다.
무료 보상과 긴급 인증 요청은 의심한다.
토큰 승인 권한은 필요한 만큼만 허용한다.

이 원칙이 지갑 사용의 기본 방어선이 될 수 있다.

공부하면서 느낀 점

이번 글을 정리하면서 가장 크게 느낀 것은, 지갑 서명이 암호화폐 사용의 핵심이라는 점이다.

시드 문구와 개인키를 안전하게 보관하는 것도 중요하다.

하지만 그것만으로 충분하지 않다.

시드 문구를 유출하지 않아도, 사용자가 위험한 서명에 직접 승인하면 자산이 위험해질 수 있다.

이 점이 무섭기도 하고, 흥미롭기도 하다.

블록체인에서는 사용자의 승인, 즉 서명이 매우 강한 의미를 가진다.

내가 서명했다면 네트워크는 그것을 유효한 승인으로 볼 수 있다.

그래서 암호화폐를 사용할 때는 “서명한다”는 행위를 가볍게 보면 안 된다.

서명은 곧 내 지갑의 권한을 사용하는 일이다.

아직 헷갈리는 것

이번 글을 정리하면서도 몇 가지 질문이 남았다.

초보자가 안전한 서명과 위험한 서명을 쉽게 구분할 수 있을까?
지갑 UI는 서명 내용을 더 쉽게 설명할 수 있을까?
토큰 승인 권한은 어느 정도 주기로 확인해야 할까?
무제한 승인은 꼭 피해야 할까, 아니면 상황에 따라 필요한가?
스마트컨트랙트 지갑은 위험한 서명을 막아줄 수 있을까?
기업이나 가맹점은 지갑 서명을 어떤 절차로 관리해야 할까?

이 질문들은 앞으로 계속 공부해야 할 주제다.

다음에 공부할 것

지갑 서명을 공부하다 보니, 이제 스마트컨트랙트라는 개념이 더 궁금해졌다.

스테이블코인도 결국 스마트컨트랙트로 발행되고 이동하는 경우가 많다고 한다.

그렇다면 스마트컨트랙트는 무엇이고, 왜 블록체인 서비스에서 중요한 걸까?

다음 글에서는 이 질문을 공부해보려 한다.

You may also like