Web3 보안
들어가며
디지털 소유권은 Web3의 새로운 특징이에요. 블록체인, 암호화폐, NFT를 통해 Web3는 소유권과 힘을 사용자에게 돌려줘요. 디지털 금융 상품을 온라인에서 직접 소유하는 일은 많은 사람에게 처음이고, 그 경험 부족을 노려 남의 자산을 가로채려는 사람들이 있어요. 이런 사기가 잘 통하는 이유는 대부분이 그 수법을 모르기 때문이에요.
하지만 사기는 Web3만의 문제가 아니에요. 이메일이나 소셜 미디어 같은 Web2 서비스에도 사기가 넘쳐나요. 게다가 많은 Web3 도구가 은행 계좌나 중앙화 거래소 같은 Web2 서비스와 이어져 있어서 그쪽도 지켜야 해요. Academy 탐험가 여러분, Web3로 나아가며 자신을 지켜 줄 지식을 갖추기로 한 것을 축하해요!
이 레슨에서 다룰 내용:
- Web2와 Web3 보안.
- 자금을 잃는 가장 흔한 경로와 그 방어법.
- 지갑 보안의 기본 전략.
- 사기를 당했을 때 대처하는 방법.
Web2의 돈
Web2에서는 기관이 사람들을 대신해 돈을 보관해요. 사용자는 자기 돈을 쓰려면 기관에 신원을 증명해야 해요. 은행 계좌나 중앙화 거래소(CEX)와 같아서, 로그인 ID와 비밀번호가 필요하죠.
사기꾼이 그 돈에 접근하려면 이 ID와 비밀번호 조합이 필요해요. 기관이 돈을 지킬 책임을 지고 있어서, 신용카드 이의 제기처럼 부정 거래를 되돌릴 수 있어요.
Web3의 돈
Web3에서는 돈이 다르게 움직여요. 잠긴 현금 지갑에 가까워서, 한번 나간 돈은 되돌릴 수 없어요. 시드 구문(비밀 단어 묶음)이 개인 키를 여는 열쇠라서, 이걸 손에 넣은 사람은 누구든 지갑을 통제해요. 누구에게도 절대 알려 주지 말고, 디지털로 저장하지도 마세요. 사진이나 메모 앱은 뚫릴 수 있어요.
노리는 건 시드 구문만이 아니에요. 악성 서명(승인하는 트랜잭션이나 메시지) 하나로도 시드 구문 없이 토큰을 모두 빼갈 수 있어요. 시드 구문과 서명을 둘 다 지키세요.
이해도 확인 1
참일까요, 거짓일까요? 사기꾼은 시드 구문을 몰라도 악성 트랜잭션이나 승인에 서명하게 만들어 지갑에서 토큰을 빼갈 수 있어요.
-
[ ] 참
-
[ ] 거짓
시드 구문 안전하게 보관하기
시드 구문을 안전하게 보관하는 방법은 여러 가지지만, 코팅한 종이 같은 실물 매체에 적어 집 안의 물과 불에 강한 금고에 두는 것이 좋은 출발점이에요. 시드 구문을 사진이나 다른 디지털 방식으로 저장하지 마세요. 비밀번호 관리자도 안 돼요.
시드 구문을 두기에 나쁜 곳:
- 서류 캐비닛
- 디지털 메모 앱
- 직장
- 디지털 사진
어디에 보관하든 자신만 접근할 수 있어야 하고, 분실과 훼손에서 안전해야 해요. 앞으로 무슨 일이 생길지는 아무도 모르니까요!
비밀번호 지키기
비밀번호를 잘 만들고 관리하는 습관은 인터넷을 안전하게 쓰는 기본이에요.
비밀번호는 이용하는 Web2 서비스마다 모두 달라야 해요. 이메일, 중앙화 거래소, 그 밖의 서비스 계정도 마찬가지예요. 계정 하나의 ID와 비밀번호가 새는 것도 문제지만, 그 조합으로 모든 계정이 열린다면 훨씬 더 심각해요!
1Password, Bitwarden, KeePass 같은 비밀번호 관리자 앱은 여러 비밀번호를 암호화해 안전하게 보관해요. 강력한 비밀번호를 새로 만들어 자동으로 저장해 주기도 해요. 사용자는 마스터 비밀번호 하나만 기억하면 돼요.
단, Web3 시드 구문은 비밀번호 관리자에 저장하지 마세요. 비밀번호 한 번만 뚫려도 Web3 자산 전부를 잃고, 대신 되찾아 줄 사람은 아무도 없어요.
이해도 확인 2
비밀번호 관리자가 왜 도움이 될까요?
-
[ ] 마스터 비밀번호 하나만 기억하면 되니까
-
[ ] 강력하고 고유한 비밀번호를 만들어 저장해 주니까
-
[ ] 비밀번호를 암호화해 안전하게 지켜 주니까
-
[ ] 위 내용 모두
2단계 인증
2단계 인증은 2FA라고도 부르는 Web2 보안의 두 번째 방어층이에요.
강력한 비밀번호를 쓰고도 계정을 해킹당한 사람이 많아요. Web2 사이트와 비밀번호 관리자는 대개 2FA를 지원해요. 비밀번호에 더해 다른 기기나 앱의 증거를 요구하는 방식이에요.
2FA라고 다 같지는 않아요:
🥉 SMS 코드가 가장 약해요. 사기꾼은 사회공학으로 전화번호를 자기 기기로 옮기는 “SIM 스왑”을 해서 코드를 가로채요. 그래도 없는 것보다는 나아요.
🥈 인증 앱(Google Authenticator, 2FAS, Aegis 등)은 기기 안에서 코드를 만들어요. 대부분의 계정에 무난한 선택이에요.
🥇 패스키와 하드웨어 보안 키(YubiKey 등)는 피싱에 가장 강해요. 진짜 사이트에 묶여 있어 똑같이 생긴 가짜에서는 로그인되지 않아요.
이해도 확인 3
2단계 인증을 강하게 권하는 이유는 무엇일까요?
-
[ ] 2FA를 켜면 계정 해킹이 불가능해지니까
-
[ ] Web2 계정에 보안 층을 하나 더해 주니까
-
[ ] 비밀번호를 더 강하게 만들어 주니까
-
[ ] 위 내용 모두
사회공학 사기
Web2와 Web3 모두에서 사기꾼은 피싱 수법으로 비밀번호나 시드 구문을 넘기게 하거나 악성 트랜잭션에 서명하게 만들어요. 흔히 “안녕하세요, MetaMask 고객지원입니다”처럼 지원 직원인 척하거나, “커뮤니티 전용 신규 NFT 민팅이에요”처럼 운영자인 척해요.
사회공학으로 사람을 압박하기도 해요. 예를 들면:
- “시간이 얼마 없어요!” 조급하게 만들기.
- “경품에 당첨되셨습니다!” 특별한 기회처럼 보이게 하기.
- “프리민팅 얼리 액세스!” 상대에게
FOMO일으키기.
놓칠까 봐 두려운 마음
FOMO는 ‘Fear Of Missing Out’, 즉 놓칠까 봐 두려운 마음이에요. 지금 당장 움직이지 않으면 큰 이익이나 기회를 놓친다는 조급한 압박감이죠.
FOMO를 막는 가장 좋은 방법은 컴퓨터에서 잠시 물러나 쉬는 거예요. 사람은 압박을 받으면 판단이 흐려지고, 그래서 FOMO가 사기 도구로 그렇게 잘 먹혀요. 상황에서 한 발짝 떨어지면 사기의 정체가 훨씬 잘 보여요.
이해도 확인 4
사기꾼은 사회공학을 어떻게 이용할까요?
-
[ ] 커뮤니티의 권위자인 척하기
-
[ ] 시간이 없다며 압박하기
-
[ ] 경품이나 무료 NFT로 FOMO 일으키기
-
[ ] 위 내용 모두
소셜 미디어에서 안전하게
사기꾼은 소셜 미디어와 크립토 프로젝트의 Discord 서버에서 활동하고, 경험 많은 사람들의 눈을 피하려고 대화를 개인 메시지로 옮겨요. 이야기는 공개된 곳에서 하고, 시드 구문은 누구에게도 절대 알려 주지 마세요. DM으로 온 링크에서는 아무것도 서명하지 마세요.
소셜 미디어의 위험 신호:
🚩 어색한 맞춤법과 문법: 기계로 급히 번역한 듯한 문장 등.
🚩 FOMO: “놓치지 마세요!”
🚩 사칭: 운영자, 고객지원, Vitalik Buterin, Elon Musk 등.
🚩 수익 보장: 크립토에 보장된 것은 없어요.
🚩 요청하지 않은 링크와 제안, 특히 개인 메시지로 온 것.
소셜 미디어에서 지킬 습관
안전을 지키는 습관:
✅ 개인 메시지로만 파는 상품이라면, 그건 필요 없는 상품일 가능성이 커요.
✅ 프로젝트의 팔로워와 멤버 수를 확인하세요. 다만 그 숫자가 진위나 품질, 안정성을 보장하지는 않아요.
✅ 프로젝트의 다른 공식 계정처럼 외부 출처로 모든 것을 교차 확인하세요.
✅ 조금이라도 의심스러우면 신뢰하는 큰 커뮤니티의 평판 좋은 사람들에게 공개된 곳에서 물어보세요.
스캠 토큰과 주소 오염
지갑에 모르는 토큰이나 NFT가 들어와 있나요? 스캠 토큰은 한 번에 수천 개 지갑으로 뿌려져요. 누군가 옮기거나 팔려고 하면 토큰의 스마트 컨트랙트에 숨겨 둔 악성 코드가 실행되거나, 시드 구문이나 악성 서명을 요구하는 피싱 사이트로 유인돼요. 가장 좋은 대응은 아예 건드리지 않는 거예요. 그냥 두거나 지갑에서 숨기세요.
비슷한 수법으로 주소 오염이 있어요. 사기꾼은 자주 쓰는 주소와 앞뒤 글자가 똑같아 보이는 주소를 만들어 아주 적은 금액을 보내요. 나중에 트랜잭션 내역에서 주소를 복사하면 사기꾼의 가짜 주소를 집어 갈 수 있어요.
이렇게 지키세요:
- 트랜잭션 내역에서 주소를 복사하지 마세요.
- 앞뒤 몇 글자만 보지 말고 전체를 확인하세요.
- 큰 금액을 보내기 전에 소액으로 시험 전송하세요.
악성 승인과 블라인드 서명
요즘 자금은 시드 구문을 도둑맞아서가 아니라 서명을 내줘서 사라지는 경우가 더 많아요. “월렛 드레이너” 피싱 키트는 평범해 보이지만 그렇지 않은 트랜잭션이나 메시지를 내밀어요:
- 악성 승인: 승인 트랜잭션 한 번으로 사기꾼의 컨트랙트에 무제한
토큰 허용량을 줘서 토큰이나 NFT를 쓰게 할 수 있어요. - 서명 피싱: Permit2처럼 가스가 들지 않는 서명 승인은 트랜잭션 없이도 토큰 전송을 허가해요.
- 위임 탈취: 새로운 지갑 기능(EIP-7702)은 서명 하나로 계정에 코드를 설치하게 해 줘요. 드레이너는 이걸 악용해 지갑을 자동으로 털어요.
내용을 모른 채 서명하는 것을 블라인드 서명이라고 해요. 전문가도 당해요. 2025년 2월 Bybit 거래소는 화면이 조작된 트랜잭션을 승인해 약 15억 달러를 잃었어요.
방어법은 이래요. 서두르지 말고, 모든 서명 요청을 읽고, “지갑을 인증하세요” 같은 안내는 일단 의심하고, 서명 전에 트랜잭션을 미리 보여 주는 지갑을 쓰세요.
이해도 확인 5
DM이 하나 왔어요. “지갑을 이전해야 합니다. metamask-upgrade.app에 연결하고 서명해 자산을 확인하세요.” 그 사이트는 가스가 들지 않는 승인 서명을 요구해요. 무엇이 문제일까요?
-
[ ] 문제없음, 서명은 무료라 자금을 옮길 수 없음
-
[ ] 시드 구문까지 입력할 때만 위험함
-
[ ] 고객지원은 원래 DM으로 연락하니 안전함
-
[ ] 서명 피싱, 그 서명이 토큰을 빼갈 수 있음
하드웨어 지갑
지갑 기초 레슨에서 봤듯이, 하드웨어 지갑은 개인 키를 인터넷에 연결된 컴퓨터와 떨어진 전용 기기에 보관해요. 덕분에 자금이 훨씬 안전해져요. 악성코드가 키를 읽을 수 없고, 훔치려면 기기를 직접 가져가 뚫어야 하니까요. Ledger, Trezor, Keystone이 대표적이고, 반드시 제조사에서 직접 사세요.
MetaMask 같은 브라우저 확장 지갑을 통해 하드웨어 지갑을 쓸 수도 있어서, 편리함과 하드웨어 보안을 함께 얻어요. Ledger가 설정 안내서를 직접 만들어 뒀어요.
한계도 있어요. 하드웨어 지갑은 승인한 것은 무엇이든 서명하므로, 악성 트랜잭션을 블라인드 서명하면 자금은 그대로 사라져요. 확인 전에 항상 기기 화면에서 내용을 직접 검증하세요.
이해도 확인 6
참일까요, 거짓일까요? 하드웨어 지갑은 승인 전에 트랜잭션을 하나하나 확인할 때만 자금을 지켜 줘요.
-
[ ] 참
-
[ ] 거짓
지갑 분산 전략
하드웨어 지갑을 갖춘 다음, 자금을 지키는 가장 좋은 방법 중 하나는 여러 지갑에 나눠 두는 거예요. 지갑 세 개로 나누는 전략을 소개할게요.
- 소셜 지갑: 자금을 거의 두지 않는
핫 지갑으로, 로그인과 민팅, 새 dApp 시험용이에요. 여기 있는 건 잃어도 된다고 생각하세요. - 거래 지갑: 거래처럼 언제든 빠르게 옮겨야 하는 자금을 두는
핫 지갑이에요. - HODL 지갑: 장기
HODL용하드웨어 지갑이에요. 이 지갑으로는 스마트 컨트랙트나 낯선 사이트와 절대 상호작용하지 마세요.
👍 장점: 사기가 위협하는 건 그 지갑에 든 자금뿐이고 전부가 아니에요.
👎 단점: 관리가 좀 번거로워요. 다만 많은 지갑 앱에서 지갑에 이름을 붙일 수 있어요.
이해도 확인 7
보안을 높이려면 자금을 _______________ 보관하는 것을 권해요.
-
[ ] 여러 에어드롭에 넣어
-
[ ] 여러 NFT에 잠가
-
[ ] 여러 지갑에 나눠
-
[ ] 여러 주소에 유동 상태로
Web2 사기에서 복구하기
아직 사기를 당하지 않았기를 바라요. 이미 당했다면 계정을 다시 안전하게 만드는 절차를 밟아야 해요.
Gmail이나 Discord 같은 Web2 서비스와 관련된 사기라면:
- 해당 계정의 비밀번호를 바꾸세요.
- “다른 모든 기기에서 로그아웃” 버튼이 있으면 눌러 사기꾼을 내보내세요.
2FA를 켜세요. 패스키나 하드웨어 보안 키가 가장 좋고, 아니면 인증 앱을 쓰세요.- 해당 서비스에 사기를 신고하세요.
- 이메일 계정도 안전한지 확인하세요.
- 친구나 믿을 만한 커뮤니티 사람들과 겪은 일을 나누세요.
Web3 사기에서 복구하기
이더리움에서는 컨트랙트가 토큰을 쓰려면 명시적인 권한을 받아야 해요. 토큰 허용량은 특정 컨트랙트에 얼마까지 쓰도록 허락했는지를 말해요. 허용량을 낮게 유지하면 자산의 위험이 줄어요.
Web3에는 사기꾼을 신고할 프로토콜 책임자가 없지만, 할 수 있는 일은 있어요:
- 뚫린 지갑에 남은 자금을 즉시 다른 지갑 주소로 옮기세요. 새 주소는 반드시 다른 시드 구문에서 나온 것이어야 해요.
- revoke.cash(여러 네트워크 지원)나 etherscan.io/tokenapprovalchecker에서 토큰
허용량을 확인하고 취소하세요. 취소에는 가스비가 들고, revoke.cash에 따라 하기 안내가 있어요. - revoke.cash의 “Delegations” 탭에서 모르는 지갑 위임이 있는지 확인하고, 지갑 앱에서 지우세요.
- 앞으로는
하드웨어 지갑을 쓰고, 서명하는 내용을 모두 확인하세요. - 피해를 입은 커뮤니티에 알려 다른 사람들에게 경고하세요.
- 친구나 믿을 만한 커뮤니티 사람들과 수법을 이야기하며 앞으로 자신과 다른 사람을 지킬 방법을 찾아보세요.