웹3 지갑 보안 문제 탐색: 이더리움 커뮤니티는 어떤 복구 시스템이 필요한가?
원문 제목:《DAOrayaki |이더리움 커뮤니티가 필요로 하는 사회 복구 시스템》
저자:Vitalik,isthisanart
번역:Xinyang
암호화폐와 블록체인 애플리케이션을 일반 사용자에게 제공하는 데 있어 가장 큰 도전 중 하나는 보안입니다: 사용자의 자금이 분실되거나 도난당하지 않도록 어떻게 방지할 수 있을까요? 자금의 분실과 도난은 심각한 문제로, 종종 무고한 블록체인 사용자가 수천 달러를 잃게 만들고, 경우에 따라 그들의 순자산의 대부분을 낭비하게 만듭니다.
수년 동안 많은 해결책이 제안되었습니다: 종이 지갑, 하드웨어 지갑, 그리고 제가 예전에 가장 좋아했던 다중 서명 지갑. 사실, 이들은 보안 측면에서 상당한 개선을 가져왔습니다. 그러나 이러한 해결책은 각기 다양한 결함을 가지고 있습니다——때때로 제공되는 도난 방지 및 분실 방지의 추가 보호는 실제 필요에 비해 훨씬 부족하고, 때로는 사용하기 불편하여 채택이 적으며, 때로는 두 가지 모두를 가지고 있습니다. 2021년 초, 비탈릭은 대안 솔루션을 제안하고 올해 5월에 발표된 "탈중앙화 사회: Web3의 영혼을 찾다"라는 글에서 다시 강조했습니다: "사회 복구 지갑"이라고 불리는 업데이트된 스마트 계약 지갑입니다. 이전의 선택지와 비교할 때, 이러한 지갑은 높은 수준의 보안성과 더 나은 사용성을 제공할 가능성이 있으며, 이더리움 생태계가 롤업 2층 솔루션으로 대규모로 이전할 때, 사회 복구 지갑이 현재 직면한 두 가지 주요 문제를 효과적으로 해결할 수 있습니다: (1) 중앙화된 중계자(relayer)에 의존, (2) 높은 거래 수수료. DAOrayaki 커뮤니티는 사회 복구 시스템에 대한 일련의 제안을 정리하고 이 글로 요약했습니다. 이 글에서는 사회 복구 지갑이 무엇인지, 사회 복구 시스템의 대체 사용 사례 및 사용자 피드백에 대해 논의할 것입니다.
1. 사회 복구 지갑
사회 복구 시스템의 작동 원리는 다음과 같습니다:
- 거래를 승인하는 데 사용할 수 있는 "서명 키"는 하나만 존재합니다.
- 최소 3명(또는 그 이상)의 "보호자"가 있으며, 그 중 대다수가 협력하여 계정의 서명 키를 변경할 수 있습니다.
서명 키는 보호자를 추가하거나 제거하는 기능을 가지고 있지만, 일정 기간(보통 1-3일)이 지나야 가능합니다.
모든 정상적인 경우에, 사용자는 일반 지갑처럼 간단하게 사회 복구 지갑을 사용하여 서명 키로 메시지를 서명할 수 있으며, 이렇게 서명된 각 거래는 한 번의 확인으로 빠르게 완료될 수 있습니다. 이는 "전통적인" 지갑(예: Metamask)에서와 같습니다.
사용자가 서명 키를 분실하면, 이때 사회 복구 기능이 활성화됩니다. 사용자는 보호자에게 연락하여 특별 거래를 서명하도록 요청하면 됩니다. 이 거래는 지갑 계약에 등록된 서명 공개 키를 새로운 서명으로 변경하는 것입니다. 이는 간단합니다: 그들은 security.loopring과 같은 웹페이지에 접속하여 복구 요청을 확인하고 서명할 수 있습니다. 각 보호자에게는 Uniswap에서 거래하는 것처럼 간단합니다.
보호자로 누구를 선택할지는 여러 가지 가능한 선택이 있습니다. 가장 일반적인 세 가지 선택은 다음과 같습니다:
- 지갑 소유자가 소유한 다른 장치(또는 종이 니모닉)
- 친구 및 가족
- 기관은 귀하의 전화번호 또는 이메일 확인 후 복구 정보를 서명하거나, 중요한 경우 비디오 통화를 통해 귀하의 신원을 직접 확인합니다.
보호자는 쉽게 추가할 수 있습니다: 그들의 ENS 이름이나 ETH 주소를 입력하여 보호자를 추가할 수 있지만, 대부분의 사회 복구 지갑은 보호자가 복구 웹페이지에서 거래에 서명하여 추가에 동의하도록 요구합니다. 합리적으로 설계된 사회 복구 지갑에서는 동일한 지갑을 다운로드하고 사용할 필요가 없습니다; 그들은 그들이 현재 가지고 있는 이더리움 지갑을 간단히 사용할 수 있습니다. 보호자를 추가하는 높은 편리성을 고려할 때, 만약 당신이 충분히 운이 좋다면 당신의 사회적 서클이 이더리움 사용자로 구성되어 있다면, 저는 개인적으로 더 높은 보호자 수(이상적으로는 7명 이상)를 선호하여 보안을 강화합니다.
이미 지갑이 있다면, 보호자가 지속적으로 노력할 필요는 없습니다: 당신이 수행하는 모든 복구 작업은 당신의 기존 지갑을 통해 완료됩니다. 만약 당신이 많은 다른 활동적인 이더리움 사용자를 모른다면, 기술적으로 능력이 있는 소수의 보호자를 믿는 것이 최선입니다.
보호자가 공격받거나 공모할 위험을 줄이기 위해, 당신의 보호자는 공개될 필요가 없습니다: 사실, 그들은 서로의 신원을 알 필요가 없습니다. 이는 두 가지 방법으로 실현될 수 있습니다. 첫째, 보호자의 주소를 체인에 직접 저장하기보다는 주소 목록의 해시를 체인에 저장하는 것이 좋습니다. 지갑 소유자는 복구 시 전체 목록을 게시하기만 하면 됩니다.
둘째, 각 보호자가 특정 복구에만 사용할 새로운 단일 용도 주소를 결정론적으로 생성하도록 요구할 수 있습니다; 실제로 복구가 필요하지 않는 한, 그들은 해당 주소를 사용하여 실제 거래를 전송할 필요가 없습니다. 이러한 기술적 보호를 보완하기 위해, 다양한 사회적 서클에서 온 다각화된 보호자를 선택하는 것이 좋습니다(이상적으로는 기관 보호자를 포함); 이러한 제안들이 결합되면 보호자가 동시에 공격받거나 공모하기가 어려워집니다.
만약 당신이 사망하거나 영구적으로 행동 능력을 상실한다면, 보호자는 자신의 신원을 공개적으로 선언할 수 있으며, 그렇게 하면 그들은 서로를 찾아 당신의 자금을 회수할 수 있습니다.
사회 복구 지갑은 배신이 아니라 "암호화된 가치"의 표현입니다.
모든 형태의 다중 서명, 사회 복구 또는 기타 형태의 제안에 대해 일반적인 반응은 이러한 솔루션이 "신뢰할 수 있는 사람"의 개념으로 회귀할 수 있다는 것입니다. 즉, 블록체인과 암호화폐 산업의 가치를 배신하는 것입니다. 사람들이 처음에는 그렇게 생각할 수 있는 이유를 이해하지만, 저는 이러한 비판이 암호화 기술에 대한 근본적인 오해에서 비롯된 것이라고 말하고 싶습니다.
저에게 암호화폐의 목표는 모든 신뢰의 필요성을 제거하는 것이 아닙니다. 오히려 암호화의 목적은 사람들이 암호화 및 경제의 기초에 접근할 수 있도록 하고, 누굴 신뢰할지에 대한 선택의 폭을 넓히며, 사람들이 더 많은 제약 형태의 신뢰를 구축할 수 있도록 하는 것입니다: 누군가에게 당신을 대신해 어떤 일을 할 수 있는 권한을 부여하되, 그들이 마음대로 행동할 수 있는 권한은 주지 않는 것입니다. 이러한 관점에서 다중 서명과 사회 복구는 이 원칙의 완벽한 표현입니다: 각 참여자는 거래를 수락하거나 거부하는 능력에 어느 정도 영향을 미치지만, 아무도 일방적으로 자금을 이동할 수 없습니다. 이러한 더 복잡한 논리는 한 사람이나 키가 일방적으로 자금을 통제하는 것보다 훨씬 더 안전한 메커니즘을 구축할 수 있게 합니다.
인간의 입력은 신중하게 사용해야 하며, 완전히 버려서는 안 됩니다. 이 기본 개념은 인간 두뇌의 장점과 단점과 잘 결합되어 매우 강력합니다. 인간의 두뇌는 비밀번호를 기억하고 종이 지갑을 추적하는 데 적합하지 않지만, 다른 사람과의 관계를 추적하는 데 특화되어 있습니다. 이러한 영향은 비기술적 사용자에게 더 강하게 나타납니다: 그들은 지갑과 비밀번호에서 더 많은 어려움을 겪을 수 있지만, "나를 상대로 공모하지 않을 7명을 선택하기"와 같은 사회적 작업에는 능숙합니다.
우리가 인간의 입력에서 어떤 정보를 추출하여 그것을 메커니즘으로 만들 수 있다면, 이러한 입력이 공격과 이용의 매개체가 되지 않도록 하는 방법을 알아내야 합니다. 사회 복구는 매우 강력합니다: 7명의 보호자가 있는 지갑이 손상을 입으려면, 이 7명의 보호자 중 4명이 서로를 발견하고 자금을 훔치기로 동의해야 하며, 그 중 어느 누구도 소유자에게 팁을 주지 않을 것입니다. 물론, 이는 순전히 한 사람에 의해 보호되는 지갑을 공격하는 것보다 더 중요한 도전입니다.
2. 사회 복구 지갑의 대체 사용 사례
비탈릭은 2021년 1월 중에 Argent와 Loopring 두 가지 예를 통해 사회 복구 지갑(즉, 스마트 계약 지갑)의 원리와 특성을 간단히 소개했습니다. 그리고 2021년 7월 ethresear.ch에서 "사회 복구 사용 사례의 대체 메커니즘"을 제안했습니다. 본 문서에서는 이 대체 메커니즘에 중점을 두고 탐구합니다.
Dark Crystal Web3라는 용어는 비탈릭 부테린이 2021년에 발표한 초기 게시물 이후의 제안에서 유래되었으며, 이는 복구 파트너가 소프트웨어를 설치하거나 다른 데이터를 보관할 필요 없이 개인 이더리움 지갑만 있으면 되는 시스템을 제안합니다.
Magma Collective는 현재 이를 MVP(최소 실행 가능 제품)로 발전시키기 위해 노력하고 있습니다. 이는 사회 복구 프로토콜로, 우리는 이를 위해 세 가지 주요 기능을 정의했습니다.
- 해당 애플리케이션은 복구자가 이더리움 메인 지갑의 접근 비밀번호 외에는 아무것도 기억할 필요가 없습니다;
- 해당 애플리케이션은 비밀을 백업할 수 있어야 하며, 이는 이더리움 개인 키를 포함하되 이에 국한되지 않습니다;
- 해당 애플리케이션은 이상적으로 비밀 소유자와 복구 파트너의 익명성을 허용해야 합니다.
해당 애플리케이션이 비밀을 처리하기 때문에, 우리 프로젝트의 보안 가정과 신뢰 요구 사항을 검증하는 것이 매우 중요합니다.
이 시스템은 두 부분으로 구성됩니다:
- 복구 파트너가 사용할 수 있는 웹 기반 dAPP으로, 이는 Web3 API를 호출하여 암호화 키 쌍에서 파생된 서명을 생성하고, 복구 중 계약에서 공유된 내용을 검색하고 복호화합니다.
- 백업자가 사용할 수 있는 오프라인 우선 소프트웨어 구성 요소입니다. 주어진 키와 공개 키 목록을 기반으로 암호화된 공유 세트를 생성한 후 블록체인에 게시합니다. 오프라인 상태에서 이 프로그램은 실제 게시를 수행하지 않지만, 암호화된 페이로드를 포함하는 dapp 링크를 생성합니다. 그런 다음, 이는 Web3 확장이 있는 브라우저(예: QR 코드를 통해)로 전송될 수 있습니다.
그 작동의 기본 프로세스는 여기에서 참조할 수 있습니다.
3. 이더리움 사회가 필요로 하는 사회 복구 시스템
이더리움 기반의 사회 복구 시스템은 사용성을 중점적으로 다룹니다.
MVP 개발 초기 단계의 일환으로, Dark Crystal Web3는 Web3 및 이더리움 커뮤니티의 핵심 도구와 프로토콜에 대한 사용자 연구를 수행하고, WalletConnect, 3Box, Metamask, Gnosis Safe, Rainbow 및 Tally의 대표자와 인터뷰를 진행했으며, Twitter와 Discord에서 익명 설문지를 배포했습니다. 이 목표는 Dark Crystal Web3 프로젝트의 사용성을 평가하는 것뿐만 아니라, 사회 복구라는 현재 구상의 중요한 프로토콜과 도구화에 대한 잠재적 수요를 평가하는 것입니다.
냉 저장의 역할
- 사용자의 기술 수준은 어떤가요?
- 어떤 종류의 "신원"이 이미 체인에서 사용되고 있으며, 익명성에 대한 선호는 무엇인가요?
- 체인 저장과 중앙화 저장의 역할
- 가장 중요한 로드맵 고려 사항
냉 저장(cold storage)의 역할
사용성이 우선시되는 것은 중요한 합의이며, 그 외에도 우리가 가장 중요하게 발견한 것은 냉 저장 사용자 시나리오가 매우 드물다는 것입니다. 냉 저장은 인터넷과 연결되지 않은 방식으로 키를 저장하는 것을 의미합니다——이는 종이 지갑이거나 오프라인 컴퓨터에만 연결된 하드 드라이브일 수 있습니다. 이는 키를 저장하는 가장 안전한 방법으로 널리 알려져 있습니다. 그러나 냉 저장 키로 거래를 수행하는 것은 상당한 사용성 장애를 초래합니다: 일반적으로 오프라인 컴퓨터에서 지갑 프로그램을 다운로드하고 설정해야 하며, 이 프로그램이 거래를 패키징하고 서명한 후 다른 장치로 전송하여 외부로 방송해야 합니다. 우리의 애플리케이션이 비밀성을 처리하기 때문에, 사용자가 이러한 과정을 얼마나 수용할 수 있을지 궁금합니다.
약간 놀랍게도, 우리는 이러한 안전한 관행이 그리 흔하지 않다는 것을 발견했습니다. 또는 더 정확하게 말하자면, 냉 저장 키와 사용자가 우리의 애플리케이션으로 백업할 키 간의 중첩 부분집합이 매우 작습니다. 우리의 모든 동기화 대화에서 우리는 다음과 같은 사실을 알게 되었습니다: 냉 저장 경로를 지원하는 것이 중요하지만, 사용자는 이를 사용하지 않을 것입니다. 실제로 냉 저장 키를 가진 응답자들로부터 우리는 그들이 가치가 적은 핫 월렛 키에 대해서만 우리와 같은 시스템을 사용할 것이라는 것을 알게 되었습니다.
설문 조사 대상자는 어느 정도 냉 저장을 선호하는 경향이 있었습니다——33%는 그들이 키를 항상 냉 저장에 두겠다고 말했습니다. 조사 시간이 지남에 따라, 우리는 가장 보안 의식이 강한 사용자들이 우리의 시스템을 신뢰하기보다는 자신의 백업 시스템을 갖는 경향이 있다는 피드백을 받았습니다. 사회 복구가 가장 필요한 사람들은 종종 기술을 잘 알지 못한다는 점을 고려할 때: "명령줄을 사용할 수 있는 사람은 사회 복구가 필요하지 않습니다."
사용자의 기술 수준은 어떤가요?
사실, 우리는 사용자에게 어떤 기술적 소양을 요구할 수 있는지는 또 다른 논의의 영역입니다——어떤 도구, 지갑 등이 우리의 잠재적 사용자에게 익숙하거나 필요한가요?
구조적으로, Dark Crystal Web3는 브라우저 기반의 호스팅 애플리케이션과 로컬에서 서비스를 제공할 수 있는 네트워크 프론트엔드가 있는 Rust 명령줄 구성 요소를 포함합니다. 우리의 설문 조사 대상자와 응답자는 기술 지향적이며, 80%는 필요하다면 명령줄 애플리케이션을 기꺼이 사용할 것이라고 말했습니다. 현재의 구조 계획이 냉 저장을 지원하려는 바람에서 비롯된 것이지만, 피드백에 따르면, 만약 우리의 애플리케이션에 완전히 호스팅된 버전이 있다면, 명확한 동기가 있는 소수의 사용자만이 다른 방식으로 사용할 것이라고 의심합니다. 이러한 피드백은 매우 강력하여, 우리가 냉 저장에서 호스팅으로 전환하는 작업을 진행했음에도 불구하고, 남과 북이 서로 다른 방향으로 나아가는 가능성이 없지 않습니다.
우리는 브라우저 기반의 dapp을 주요 진입점으로 논의하고 있지만, 6명의 응답자 중 2명은 피싱 공격의 빈도 때문에 다운로드 가능한 애플리케이션이 더 신뢰할 수 있고 바람직한 디자인 패턴이라고 강력한 피드백을 받았습니다. 대다수의 경우, Metamask, Walletconnect, 모바일 지갑 및 블록체인 탐색기와 같은 도구는 응답자나 설문 조사 대상자에게 아무런 문제가 되지 않았습니다.
우리는 프로토콜이 비밀을 백업하는 것과 무관하게 하려고 했지만, 모든 잠재적 비밀 소유자가 이미 이더리움에 가입했음을 믿습니다. 우리는 여러 번 명확하게 들었으며, 비이더리움 사용자는 우리의 사회 복구 프로토콜을 선택할 가능성이 낮다고 합니다. 즉, 그들은 복구 파트너가 기술적으로 무지한 사람들, 심지어 지갑이 없는 사람들을 포함하기를 원합니다. 우리는 이 독특한 요구를 고려해야 합니다.
체인에서 이미 사용되고 있는 "신원"과 익명성에 대한 선호
우리의 핵심 문제 중 하나는 참여자의 익명성을 어떻게 지원할 것인가입니다: 얼마나 많은 익명성이 필요한가, 그리고 익명성을 유지하면서도 나중에 복구 데이터를 신뢰할 수 있게 찾을 수 있는 방법은 무엇인가요? 몇 가지 잠재적 해결책이 있으며, 이들은 복구 데이터를 저장하기 위해 어떤 쿼리 키를 사용하는 것과 관련이 있으며, 이 키는 사용자의 메인 지갑에서 해시되거나 파생될 수 있습니다.
그러나 우리는 사용자의 사용 패턴이 이러한 방식을 지원할지 궁금합니다. 사람들은 지속적인 지갑을 유지하나요, 아니면 동일한 시드에서 파생된 다양한 지갑을 자주 전환하나요? 그들은 새로운 시드를 생성할까요? 모든 대면 인터뷰에서, 우리의 전형적인 사용자는 어떤 상황에서도 잊을 수 없는 "주 이더리움 주소"를 가지고 있다는 것을 확인했습니다. 그러나 흥미롭게도, 설문 조사 대상자의 절반은 사용자가 이를 잊었거나 아예 없었다고 말했습니다. "주 이더리움 주소"라는 신원 개념의 빈도는 향후 연구의 잠재적 분야입니다.
전반적으로, 피드백은 익명성을 지지하지만, 우리는 여러 번 들었습니다. 상당수의 사용자가 애플리케이션의 일부가 되면, "바다에서 바늘 찾기"식의 익명성 수준이 많은 경우 충분하다고 합니다. 그러나 그 이전에 어떻게 시작할지, 또는 구체적으로 어떤 기준을 충족해야 하는지는 불확실합니다. 우리는 몇몇 응답자와 이더리움 주소를 공개 암호 키에 매핑하는 데 사용할 수 있는 공개 프로토콜이 있는지 논의했지만, 이 역할을 수행할 수 있는 기존 프로젝트는 발견하지 못했습니다. 우리는 또한 복구 파트너의 익명성이 비밀 소유자의 익명성보다 더 많은 지지를 받았다는 것을 발견했습니다.
세 명의 설문 조사 대상자는 그들이 복구 파트너가 누구인지 잊을 수 있다는 우려를 제기했으며, 우리는 복구 파트너를 여러 번 변경할 수 있는 기능 요청도 받았습니다.
체인 저장과 중앙화 저장
우리는 두 가지 경우에 체인에서 암호화된 비밀을 저장하는 것에 대한 비판을 받았습니다. 하나는 비용 관점에서, 다른 하나는 암호학의 양자 위협에 대한 우려에서 비롯됩니다. 맞습니다, 우리가 사용하는 어떤 암호학이 언젠가 해킹된다면, 우리의 프로토콜에 저장된 모든 비밀이 영향을 받을 것입니다. 비용 측면에서, 설문 조사 대상자와 응답자는 애플리케이션의 거래 비용 상한선이 약 200달러라고 생각하며, 더 낮은 비용이 더 선호됩니다.
우리는 우리의 사용 사례에 대해 메인넷과 폴리곤 또는 그노시스 체인과 같은 다른 유사한 이더리움 네트워크 간에 아무런 이점이 없다는 이야기를 들었습니다.
마지막으로, 누군가는 애플리케이션에 중앙화된 경로를 제공하는 것을 고려할 것을 제안했습니다. 사용자가 체인에 저장하지 않도록 선택할 수 있으며, 이는 물론 다른 잠재적 문제(지속적인 유지 관리, 잠재적 유출)를 동반하지만, 여전히 접근성을 의미 있게 증가시킬 수 있습니다. 37%의 설문 조사 대상자는 그들이 체인 외부 저장에 대해 더 편안하게 느낄 것이라고 밝혔습니다. 또한, 프로토콜의 장기 유지 관리가 여러 번 우려 사항으로 언급되었습니다: 우리의 팀이 해체되거나 중대한 변화가 발생한 후, 잠재적 사용자가 복구 과정이 여전히 작동할 것이라고 어떻게 믿을 수 있을까요? 그리고 비밀 소유자가 전체 과정을 거치지 않고도 비밀이 복구될 수 있다는 것을 어떻게 검증할 수 있을까요?
로드맵에서 가장 중요한 고려 사항
지금까지 최소 실행 가능 제품을 고려하면서, 우리가 얻은 비밀 복구의 중요한 측면 중 하나는 비밀 소유자와 복구 파트너 간의 의사소통이 가능해야 한다는 것입니다. 초기 설정 정보와 복구 데이터는 양측 간에 전송되어야 합니다. 이는 아마도 이 시스템의 가장 큰 보안 약점일 것입니다. 100%의 설문 조사 대상자는 불안전한 오프라인 전송을 통해 일부 비밀 조각이 유출될 가능성이 있다고 생각하며, 우리의 대면 인터뷰에서도 이 의견이 강하게 반영되었습니다.
우리의 응답자 중 많은 이들이 프로토콜 개발자였기 때문에, 우리는 암호화된 지갑 간의 정보 전달과 의사소통에 도움이 될 수 있는 기존 로드맵 기능에 대해 질문했습니다. 복구 과정의 각 단계에서 비밀 소유자와 복구 파트너에게 알림과 관련된 일련의 밀접하게 관련된 기능이 있었습니다. 우리가 인터뷰한 많은 지갑 개발자들은 실제로 그들의 로드맵에 이 기능이 포함되어 있다고 밝혔지만, 출시 날짜는 확인되지 않았습니다. 이 방향으로의 추가 작업은 생태계에 매우 중요해 보이며, 이러한 솔루션 중 하나와 통합하는 것이 Dark Crystal Web3의 미래 작업의 핵심이 될 가능성이 높습니다.