브라우저 확장 프로그램 지갑 완벽 해설

·6분 읽기·작성자: SSP Editorial Team
샌드박스와 2-of-2 서명 자물쇠로 보호되는 브라우저 확장 프로그램 지갑 일러스트

브라우저 확장 프로그램 지갑은 여러분의 웹 브라우저 — Chrome, Firefox, Brave, Edge — 안에서 동작하는 작은 프로그램으로, 여러분의 암호화폐 키를 보관합니다. 설치 방법은 광고 차단기를 설치하는 것과 같습니다. 브라우저의 부가 기능 스토어에서 한 번의 클릭으로 끝납니다. 일단 설치되면 주소 표시줄 옆에 지갑 아이콘이 자리 잡고, 암호화폐를 다뤄야 하는 웹사이트를 방문할 때마다 준비된 상태가 됩니다.

이 가이드는 이런 종류의 지갑이 실제로 어떻게 동작하는지, 그 보안 모델은 어떤 모습인지, 그리고 진짜 위험은 어디에 있는지 설명합니다. 지갑이 완전히 처음이라면 먼저 암호화폐 지갑이란 무엇인가를 읽고, 그다음 소프트웨어 지갑과 하드웨어 지갑의 더 넓은 비교를 읽어 보세요. 이 글은 브라우저 기반 종류에 구체적으로 초점을 맞춥니다.

"확장 프로그램"이란 실제로 무엇인가

브라우저 확장 프로그램은 여러분의 브라우저에 기능을 더해 주는 소프트웨어입니다. 브라우저가 호스트 프로그램이고, 확장 프로그램은 호스트가 자기 안에서 실행하도록 허락한 손님입니다. 확장 프로그램은 여러분이 방문하는 웹페이지를 읽고 바꿀 수 있고, 자체 팝업 창을 보여줄 수 있으며, 여러분의 컴퓨터에 데이터를 저장할 수 있습니다. 바로 이 능력이 확장 프로그램 지갑을 편리하게 만드는 것이며, 또한 거기에 돈을 맡기기 전에 여러분이 이해해야 할 바로 그것입니다.

확장 프로그램 지갑은 이 능력을 세 가지 일에 씁니다. 여러분의 키를 보관합니다. 보통 비밀번호로 보호된 채 브라우저의 로컬 저장소에 둡니다. 무언가를 승인해야 할 때 팝업 창을 보여줍니다. 그리고 주입이라는 기법을 통해 웹페이지와 대화합니다.

주입은 어떻게 동작하는가

주입은 지갑이 여러분이 여는 모든 웹페이지에 작은 코드 조각을 놓는다는 뜻입니다. 지갑이 여러분이 방문하는 모든 사이트의 탁자 위에 전화기를 한 대씩 놓아둔다고 생각해 보세요. 어떤 웹사이트가 암호화폐로 무언가를 하고 싶을 때 — 여러분의 지갑에 연결하거나, 잔액을 보여주거나, 거래를 보내 달라고 요청할 때 — 그 전화기를 들어 요청을 합니다.

여러분의 지갑은 그 요청을 받지만 조용히 행동하지 않습니다. 팝업 창을 열어 여러분에게 묻습니다. "이 사이트가 연결하려고 합니다." "이 사이트가 0.2 ETH를 보내는 거래에 서명하기를 원합니다." 여러분이 승인을 클릭하기 전까지 아무것도 움직이지 않습니다. 웹사이트는 요청할 수 있고, 동의할 수 있는 사람은 오직 여러분뿐입니다. 이 승인 단계는 어떤 브라우저 지갑을 쓰든 가장 중요한 습관입니다. 클릭하기 전에 팝업을 읽으세요.

이 설계 덕분에 탈중앙화 애플리케이션 — dApp, 즉 블록체인 위에서 동작하는 웹사이트 — 이 추가 소프트웨어 없이 평범한 브라우저 탭에서 곧바로 동작할 수 있습니다. 정말 유용합니다. 하지만 지갑이 모든 페이지에서 닿을 수 있기 때문에, 보안을 이야기할 때 모든 페이지 역시 그림의 일부가 됩니다.

공격 표면

"공격 표면"은 어떤 것이 공격받을 수 있는 모든 자리를 가리키는 소박한 용어입니다. 앞문, 뒷문, 열린 창문은 모두 한 집의 공격 표면의 일부입니다. 브라우저 지갑에도 그런 자리가 몇 군데 있습니다.

악의적이거나 침해된 웹페이지. 지갑이 모든 사이트에 주입되기 때문에, 적대적인 사이트는 지갑에 요청을 보낼 수 있습니다. 지갑은 그래도 먼저 여러분에게 묻기 때문에 악의적인 페이지가 혼자서 자금을 옮길 수는 없습니다. 하지만 헷갈리는 요청을 짜내어 여러분이 읽지 않고 승인하기를 바랄 수는 있습니다.

피싱 dApp. 피싱 사이트는 진짜처럼 보이도록 만들어진 가짜입니다. 인기 있는 거래소나 NFT 마켓플레이스의 모조품이 여러분에게 "지갑을 인증하라"고 요청하면서, 실제로는 지갑을 비우는 거래를 제시할 수 있습니다. 팝업은 자신이 무엇을 할지에 대해 정직합니다. 왜 그러는지에 대해 거짓말한 것은 웹사이트입니다.

지나치게 넓은 권한. 어떤 확장 프로그램을 설치하든 브라우저는 그것이 무엇에 접근할 수 있는지 나열합니다. 많은 지갑은 모든 웹사이트의 데이터를 읽고 바꿀 권한을 요청합니다. 어디에나 주입하려면 그 권한이 필요하기 때문입니다. 그 대가는, 닿는 범위가 넓은 지갑은 언젠가 여러분에게 등을 돌렸을 때 더 큰 노획물이 된다는 것입니다.

공급망 위험. 이것이 미묘한 위험입니다. 공급망 공격은 여러분이 아니라 여러분이 의존하는 무언가를 노립니다. 현대 소프트웨어는 의존성이라 불리는 수백 개의 더 작은 오픈소스 구성 블록으로 조립됩니다. 공격자가 그런 블록 중 하나에 나쁜 코드를 슬쩍 집어넣거나 — 오염된 의존성 — 확장 프로그램의 새 버전을 여러분의 브라우저로 밀어 넣는 업데이트를 가로채면, 악성 코드는 여러분이 이미 신뢰하는 통로를 통해 도착합니다. 여러분은 안전한 확장 프로그램을 설치했지만, 이후의 어떤 업데이트나 그 안에 묻힌 어떤 구성 요소는 안전하지 않았던 것입니다.

브라우저 확장 프로그램이 어떻게 만들어지고 보호되는지를 더 깊이, 특정 업체에 치우치지 않고 살펴보려면 Mozilla의 MDN 웹 확장 프로그램 문서가 권위 있는 참고 자료이며, OWASP 프로젝트는 위의 웹 위협에 관한 일반 지침을 발행합니다.

SSP는 어떻게 위험을 줄이는가

이 가운데 어느 것도 브라우저 지갑을 쓰는 것이 안전하지 않다는 뜻은 아닙니다. 잘 만들어진 지갑은 공격 표면이 없는 척하는 대신 그것을 염두에 두고 계획해야 한다는 뜻입니다. SSP는 이를 두 가지 구체적인 방법으로 합니다.

LavaMoat 런타임 샌드박싱. 샌드박스는 무언가가 시스템의 나머지에 닿지 못한 채 실행될 수 있는 가둬진 공간입니다. 진짜 모래상자가 모래를 한곳에 붙잡아 두는 것과 같습니다. LavaMoat는 그 발상을 그 수백 개의 의존성에 적용합니다. 각 의존성은 진짜로 필요한 것에만 접근할 수 있는 자기만의 봉인된 칸 안에서 실행됩니다. 그래서 오염된 의존성이 공급망 공격으로 정말 안에 슬쩍 들어오더라도 갇혀 버립니다. 칸의 벽이 허락하지 않기 때문에, 지갑을 가로질러 여러분의 키에 조용히 닿을 수 없습니다. 공격은 파국이 되는 대신 봉쇄됩니다. 이에 대해서는 뉴스룸 글 LavaMoat이 SSP에 오다에서 자세히 다룹니다.

2-of-2 설계. 이것이 더 큰 구조적 보호입니다. 대부분의 브라우저 지갑은 온전한 키를 보관합니다. 나쁜 팝업을 승인하면 자금은 사라집니다. SSP는 서명을 두 기기에 나눕니다. 브라우저 확장 프로그램이 키 하나를 보관하고, 여러분 휴대전화의 SSP Key 앱이 두 번째를 보관합니다. 거래는 둘 다 서명할 때만 유효합니다. 확장 프로그램 혼자서는 단 한 닢의 코인도 옮길 수 없습니다.

이것은 셈을 완전히 바꿉니다. 악의적인 페이지가 확장 프로그램을 속이더라도, 침해된 업데이트가 거기에 닿더라도, 공격자는 필요한 두 키 중 하나만 쥡니다. 여러분의 휴대전화 — 별도의 기기이며, 거래 세부 정보를 보여주는 별도의 화면을 가진 — 가 그래도 승인해야 합니다. 평범한 브라우저 지갑을 비워 버릴 공격이 넘을 수 없는 벽 앞에서 멈춰 섭니다.

그래서, 브라우저 지갑은 안전한가?

브라우저 지갑은 두 가지가 참일 때 일상적인 사용에 충분히 안전합니다. 지갑이 위에서 설명한 실패를 봉쇄하도록 만들어져 있을 것, 그리고 여러분이 승인 팝업을 반사가 아니라 진짜 결정으로 대할 것입니다. 확장 프로그램은 공식 스토어에서만 설치하고, 지갑을 여러분이 신뢰하는 브라우저에 따로 두며, 사이트가 무언가에 서명하라고 요청할 때마다 속도를 늦추세요.

브라우저 지갑의 가장 큰 약점 — 분주하고 인터넷에 연결된 브라우저 안에 산다는 것 — 은 실재합니다. SSP의 답은 그것을 무시하는 것이 아니라 브라우저가 침해될 수 있다고 가정하고 그것을 견뎌 낼 수 있게 만드는 것입니다. LavaMoat은 나쁜 의존성을 봉쇄하고, 2-of-2 설계는 확장 프로그램 혼자로는 여러분이 자금을 잃기에 결코 충분하지 않다는 뜻입니다. 이 시리즈의 다음 글에서 모바일 암호화폐 지갑은 그 짝의 나머지 절반 — 함께 서명해야 하는 휴대전화 — 을 살펴봅니다.

이 글 공유하기

관련 글