Vitalik: 사회 회복 지갑의 필요성에 대하여
출처 | vitalik.ca
저자 | 비탈릭 부테린
출처 | vitalik.ca
저자 | 비탈릭 부테린
일반 사용자가 사용할 수 있는 암호화폐 및 블록체인 응용 프로그램의 가장 큰 과제 중 하나는 의심할 여지 없이 보안입니다. 사용자가 자금을 잃거나 도난당하는 것을 방지하려면 어떻게 해야 할까요? 손실 및 도난은 무시할 수 없는 문제로, 무고한 블록체인 사용자가 수천 달러, 경우에 따라 순자산의 상당 부분을 잃게 됩니다.
수년에 걸쳐 종이 지갑, 하드웨어 지갑, 멀티시그 지갑(개인적으로 가장 좋아하는 지갑)과 같은 많은 솔루션이 제안되었습니다. 실제로 이러한 솔루션은 보안을 크게 향상시키지만 모두 다양한 단점이 있습니다. 도난 방지 및 분실 방지 보호 기능이 실제 요구 사항보다 훨씬 적거나 운영의 불편으로 인해 채택률이 매우 낮을 수 있습니다. 그러나 최근 더 나은 대안이 등장했습니다. 소셜 복구 지갑이라고 하는 새로운 종류의 스마트 계약 지갑입니다. 이러한 유형의 지갑은 이전 옵션보다 더 나은 보안과 더 나은 사용성을 제공할 수 있지만 여전히 쉽고 널리 보급되는 데에는 다소 거리가 있습니다. 이 게시물에서는 소셜 복구 지갑이 무엇인지, 왜 중요한지, 생태계 전반에 걸쳐 더 폭넓게 채택될 수 있는 방법에 대해 설명합니다.
보조 제목
블록체인 산업 초기부터 지갑 보안 문제가 생태계를 괴롭혀 왔다고 할 수 있습니다. 2011년 비트코인이 당시 존재하는 거의 유일한 암호화폐였을 때 분실 및 도난 사고가 빈번했습니다. Ethereum을 구축하기 전에 저는 Bitcoin Magazine의 공동 창립자이자 저자로서 당시 암호 화폐에서 발생했던 공격, 손실 및 도난에 대해 자세히 설명하는 기사를 썼습니다.
다음은 그 예입니다.
어젯밤 PDT 오후 9시경 CoinChat[.]freetzi[.]com에 대한 링크를 클릭했고 Java를 실행하라는 메시지가 표시되었습니다. 그렇게 했더니(일반 대화방인 줄 알았는데) 그 뒤로는 아무 일도 일어나지 않았다. 나는 아무 생각 없이 창문을 닫았다. 약 14분 후 나는 bitcoin-qt 지갑을 열고 내가 승인하지 않은 거래를 보았습니다. 거의 전체 지갑을 다른 지갑으로 옮길 뻔했습니다...
사용자는 당시 $300 상당의 2.07 BTC를 잃었고 지금은 $70,000 이상입니다. 다른 예시:
2011년 6월, Bitcointalk 회원인 allinvain은 알 수 없는 침입자가 자신의 컴퓨터에 직접 액세스한 후 25,000 BTC(당시 $500,000)를 잃었습니다. 공격자는 allinvain의 wallet.dat 파일을 직접 획득한 다음 빠르게 지갑을 샅샅이 뒤져 allinvain의 컴퓨터에서 거래를 보내거나 자신의 컴퓨터에 wallet.dat 파일을 업로드하고 비울 수 있습니다.
현재 가치로 환산하면 거의 100만 달러에 육박한다. 그러나 도난만이 유일한 문제는 아니며 개인 키를 분실한 예도 있습니다. Stefan Thomas의 이야기를 확인하십시오.
텍스트
Bitcoin 개발자 Stefan Thomas의 지갑은 암호화된 USB 장치, Dropbox 계정 및 Virtualbox 가상 머신의 세 위치에 백업됩니다. 그는 그 중 두 개를 지울 수 있었지만 세 번째 백업의 암호를 잊어버려 7,000 BTC(당시 $125,000 상당)에 대한 액세스 권한을 영원히 잃었습니다. Thomas는 "그 이후로 더 나은 클라이언트를 구축하기 위해 노력했습니다."라고 대답했습니다.
지갑 보안이 과소평가된 사회적, 심리적 이유를 쉽게 도출할 수 있습니다. 사람들은 항상 비판적인 대중 앞에서 어리석거나 부주의하게 보이고 싶어하지 않으며, 그 결과 그들의 자금은 종종 도난에 취약합니다. 이것은 자금 손실의 경우 더욱 그러합니다. 일반적인 (내 생각에는 매우 부정확하지만) 믿음은 "당신은 자신에게만 책임이 있습니다"라는 것입니다. 하지만 현실은 블록체인을 포함한 디지털 기술의 목표는 사람들이 엄청난 정신적 노력을 기울이거나 실수를 두려워하며 살 필요 없이 복잡한 거래에 더 쉽게 참여할 수 있도록 하는 것입니다. 분실 및 절도에 대한 솔루션이 12단계 자습서, 덜 안전한 대응책, 가끔 비꼬는 "손실에 대해 죄송합니다" 응답으로 제한되는 생태계는 널리 받아들여지지 않을 것입니다.
따라서 자금의 손실 및 도난 위험을 줄이기 위한 솔루션이 채택되기 시작했으며 이러한 솔루션은 암호 화폐 사용자가 개인 자산의 보안을 유지하는 데 많은 에너지와 시간을 필요로 하지 않으며 전체 산업에도 매우 가치가 있습니다. .
보조 제목
하드웨어 지갑만으로는 충분하지 않습니다.
하드웨어 지갑은 종종 암호화폐 자산 관리를 위한 최고의 기술로 선전됩니다. 하드웨어 지갑은 사용자의 컴퓨터나 휴대폰(예: USB를 통해)에 연결할 수 있는 특수 하드웨어 장치이며 개인 키를 생성하고 거래에 서명할 수 있는 전용 칩만 포함합니다. 사용자는 컴퓨터나 휴대폰에서 트랜잭션을 시작할 수 있으며 전송하기 전에 하드웨어 지갑에서 확인해야 합니다. 개인 키는 하드웨어 지갑에 보관되므로 컴퓨터나 전화에 대한 공격으로 자금이 지워지지 않습니다.
➤ 공급망 공격: 하드웨어 지갑을 구매하면 지갑을 설계한 회사, 지갑을 생산한 공장, 운송 과정의 핸들러 등 생산 과정에서 많은 참여자를 신뢰하고 지갑을 교환합니다. 하드웨어 지갑은 이러한 공격의 자석이 될 수 있습니다. 자금이 도난당할 확률은 도난당한 장치의 수와 매우 밀접한 관련이 있습니다. Ledger와 같은 하드웨어 지갑 생산업체는 이러한 위험에 대한 여러 보호 장치를 마련했지만 모든 것이 안전한 것은 아닙니다. 기본적으로 하드웨어 장치는 오픈 소스 소프트웨어와 달리 감사할 수 없습니다.
➤ 단일 실패 지점: 누군가 뒤에 서서 PIN을 입력하는 것을 지켜본 다음 하드웨어 지갑을 훔치면 자금을 훔칠 수 있습니다. 하드웨어 지갑을 분실하면 하드웨어 지갑이 초기 설정 중에 백업을 생성하고 내보내지 않는 한 자산을 잃게 되지만 우리가 본 것처럼 여전히 다른 문제가 있습니다.
보조 제목
vote dance type subject valley fall usage silk essay lunch endorse lunar obvious race ribbon key already arrow enable drama keen survey lesson cruel
니모닉만으로는 충분하지 않습니다.
많은 지갑(하드웨어 또는 소프트웨어)에는 사람이 읽을 수 있는 12-24단어로 된 지갑의 루트 개인 키 인코딩인 니모닉 구문을 출력하는 초기 설정 프로세스가 있습니다. 니모닉 구문은 다음과 같습니다.
시드 문구는 손실을 방지하는 데 도움이 되지만 자금을 도난당한 경우에는 도움이 되지 않습니다. 설상가상으로 표준 하드웨어 지갑 + 니모닉 백업 콤보가 있는 경우 하드웨어 지갑 + PIN을 도난당하거나 니모닉 백업을 도난당하면 자금이 손실됩니다. 또한 니모닉을 잘 보호하고 실수로 분실하지 않도록 하는 것 자체가 정신적 부담입니다.
문구를 50대 50으로 나누어 반을 친구에게 주면 절도 문제는 완화될 수 있지만, 1) 실제로 이런 행동을 조장하는 사람은 거의 없고, 2) 니모닉이 짧으면(128 비트) 그러면 치명적인 공격자는 절반을 훔친 후 나머지 264개의 가능한 조합을 난폭하게 검색하여 나머지 절반을 찾을 수 있으며 3) 정신적 부담이 더욱 증가합니다.
보조 제목
그래서 우리는 무엇이 필요합니까?
다음 세 가지 기준을 충족하는 지갑 디자인이 필요합니다.
➤ 단일 실패 지점 없음: 도난당할 수 있는 것이 없으므로 공격자가 자금에 대한 액세스 권한을 얻거나 손실된 경우 액세스를 거부할 수 있습니다.
➤ 정신적 부하 감소: 사용자가 익숙하지 않은 새로운 습관을 배우거나 특정 행동 패턴을 지속적으로 따르기 위해 정신적 노력을 기울이는 것을 가능한 한 적게 요구합니다.
➤ 거래의 용이성: 대부분의 정상적인 활동을 수행하는 데 일반 지갑보다 더 많은 노력이 필요하지 않습니다(예: 상태 및 메타마스크 등).
좋은 징조!
2013년에 이러한 문제를 해결하기 위한 최고의 기술은 다중 서명(multisig)이었습니다. 세 개의 키가 있는 지갑을 가질 수 있으며 그 중 두 개는 거래를 보내는 데 필요합니다.
다중 서명 지갑의 경우 "개인"을 위한 자금 보유의 주요 과제는 누가 자금을 보유하는가입니다. 거래를 승인하는 방법? 가장 일반적인 공식은 "두 개의 쉽게 액세스할 수 있지만 사용자가 보유한 별도의 키(예: 노트북 및 전화)와 세 번째 키는 더 안전하고 백업을 얻기 어렵고 오프라인으로 보관하거나 친구나 조직이 보유한 세 번째 키"입니다.
그것은 꽤 안전합니다: 단일 장치의 분실이나 도난으로 인해 귀하의 자금이 잠기지 않습니다. 그러나 그 보안은 완벽하지 않으며 누군가의 노트북을 훔칠 수 있다면 일반적으로 휴대폰을 훔치는 것도 그리 어렵지 않습니다. 이제 각 트랜잭션에는 두 개의 장치를 사용하여 두 번의 확인이 필요하므로 사용성도 문제입니다.
보조 제목
사회적 회복이 더 낫다
이것은 지갑 보호에 대한 나의 개인적인 선호입니다: 사회적 회복. 작동 메커니즘은 다음과 같습니다.
➤ 트랜잭션을 승인하는 단일 "서명 키"가 있습니다.
➤ 또한 최소 3명의 구성원으로 구성된 "보호자" 집합이 있으며, 대부분이 결합하여 계정의 서명 키를 변경합니다.
서명 키는 보호자를 추가하거나 제거할 수 있으며 이 과정에서 지연(보통 1-3일)이 있습니다.
정상적인 상황에서 사용자는 일반 지갑처럼 쉽게 소셜 복구 지갑을 사용할 수 있으며 서명 키를 사용하여 메시지에 서명하여 서명된 각 트랜잭션이 한 번의 확인 클릭으로 신속하게 완료될 수 있으며 작업은 "전통적인" 지갑(예: 메타마스크).
소셜 복구 지갑이 실제로 작동하는 곳은 사용자가 서명 키를 잃어버렸을 때입니다. 사용자는 보호자에게 연락하여 지갑에 등록된 서명 공개 키를 변경하는 특별한 거래에 서명하도록 요청할 수 있습니다. 이것은 실제로 어려운 일이 아니며 웹페이지(예: security.loopring.io)를 방문하여 로그인하고 복구 요청을 받은 다음 서명할 수 있습니다. 가디언 작업은 Uniswap에서 거래하는 것처럼 간단할 수 있습니다.
가디언에는 여러 가지 옵션이 있으며 가장 일반적인 세 가지 옵션은 다음과 같습니다.
➤ 지갑 소유자 자신의 다른 기기(또는 종이 니모닉 문구)
➤ 친구 또는 가족
➤ 조직, 전화번호 또는 이메일 확인을 받은 후 복구 계약에 서명하거나 설정 값이 높을 경우 화상 통화를 통해 본인 확인
보호자를 추가하는 것도 쉽습니다. 보호자를 추가하려면 ENS 도메인 이름이나 ETH 주소를 입력하기만 하면 됩니다. 하지만 대부분의 소셜 복구 지갑은 보호자가 추가에 동의하기 위해 복구 페이지에서 트랜잭션에 서명해야 합니다. 적절하게 설계된 소셜 복구 지갑에서는 보호자가 동일한 지갑을 다운로드하여 사용할 필요가 없으며 유형에 관계없이 기존 이더리움 지갑을 사용할 수 있습니다. 가디언 추가의 편의성을 생각하면, 만약 당신의 소셜 서클이 이더리움 사용자들로 구성되어 있다면, 저는 개인적으로 보안을 강화하기 위해 가디언을 더 많이(가급적 7명 이상) 설정하는 것을 선호합니다. 이미 지갑이 있는 경우 보호자가 지속적으로 감시할 필요가 없으며 기존 지갑을 통해 복구 작업을 수행할 수 있습니다. 활성 이더리움 사용자를 충분히 알지 못한다면 운영 방법을 아는 가디언을 적게 두는 것이 좋습니다.
가디언이 공격당하고 결탁할 위험을 줄이기 위해 가디언을 공개할 필요는 없으며 실제로 서로의 신원을 알 필요도 없습니다. 이는 두 가지 방법으로 수행할 수 있습니다. 첫째, 가디언 주소 목록의 해시는 가디언 주소가 아닌 온체인에 저장되며 지갑 소유자는 복원 시 전체 목록을 게시하기만 하면 됩니다. 둘째, 각 가디언은 현재 복구에 대해서만 결정론적으로 새 주소를 생성해야 할 수 있습니다. 복구가 실제로 필요한 경우가 아니면 트랜잭션을 보내기 위해 이 주소를 사용할 필요가 없습니다. 기술적 보호와 협력하기 위해서는 서로 다른 사회계(이상적으로는 기관보호자 포함)의 다른 보호자를 선택하는 것이 좋으며, 이러한 솔루션은 보호자가 동시에 공격하거나 공모하는 것을 어렵게 만듭니다.
지갑 소유자가 사망하거나 영구적으로 무력화되는 경우 가디언이 서로를 찾고 자금을 회수할 수 있도록 신원을 공개하는 것이 사회적으로 허용되는 표준 프로토콜이 될 것입니다.
소셜 복구 지갑은 "암호화 가치"를 배반하는 것이 아니라
나에게 암호화의 목표는 모든 형태의 신뢰를 제거하는 것이 아닙니다. 대신, 암호화의 목적은 사람들이 암호화와 경제학을 사용하여 신뢰할 수 있는 사람의 선택을 늘리고 더 제한된 형태의 신뢰를 구축할 수 있도록 하는 것입니다. 누군가가 귀하를 대신하여 특정 작업을 수행할 수 있는 권한을 부여받을 수 있습니다. , 백지 위임장을 부여하지 않고. 이러한 방식으로 볼 때 다중서명 및 소셜 복구는 이 원칙의 완벽한 예입니다. 각 참가자는 거래가 수락되거나 거부될 수 있는지 여부에 어느 정도 영향을 미치지만 아무도 일방적으로 자금을 이동할 수 없습니다. 이 더 복잡한 논리는 자금이 개인 또는 키에 의해 일방적으로 제어되어야 하는 경우보다 훨씬 더 안전한 설정을 도입합니다.
인간의 입력을 완전히 버리지 않고 아껴서 사용한다는 기본 아이디어는 인간 두뇌의 강점과 약점에 잘 맞기 때문에 작동합니다. 인간의 두뇌는 암호를 기억하고 종이 지갑을 보관하는 데는 매우 좋지 않지만 ASIC은 다른 사람과의 관계를 추적하는 데 적합합니다. 기술적이지 않은 사용자의 경우 효과가 더욱 강력해집니다. 그들은 지갑과 암호에 문제가 있을 수 있지만 "나를 속이려고 공모하지 않을 7명을 선택"하는 것과 같은 사회적 작업에는 기술 사용자만큼 능숙합니다. 입력을 공격 벡터로 만들지 않고 사람의 입력에서 일부 메커니즘으로 일부 정보를 추출할 수 있다면 방법을 알아내야 합니다. 소셜 복구는 매우 강력합니다. 7명의 가디언이 있는 지갑을 손상시키려면 7명의 가디언 중 최소 4명이 어떻게든 서로를 식별하고 결탁하여 자금을 훔쳐야 합니다. 그 중 누구도 지갑 소유자에게 숨길 수 없습니다. 보고하는 것보다 훨씬 어렵습니다. 순전히 개인이 관리하는 지갑을 공격합니다.
보조 제목
위에서 언급한 소셜 복구에서는 지갑 "분실"의 위험에 대해 논의하지만 서명 키가 "도난"될 위험이 여전히 있습니다. 누군가가 귀하의 컴퓨터에 침입하여 이미 로그인한 상태에서 몰래 들어와서 Hit를 제공합니다. 머리에 넣거나 사용자 인터페이스 결함을 만들어 트랜잭션에 서명하도록 유인할 수도 있습니다.
우리는 금고를 추가함으로써 이러한 문제에 대처할 수 있는 사회적 회복력을 높일 수 있습니다. 모든 소셜 복구 지갑에는 자동 생성된 볼트가 함께 제공될 수 있습니다. 금고 주소로 자산을 전송하는 것만으로 자산을 금고로 옮길 수 있지만, 금고 밖으로 옮기려면 1주일의 지연이 있습니다. 지연되는 동안 서명 키(또는 보호자)는 거래를 취소할 수 있습니다. 원하는 경우 일부 제한된 작업(예: 화이트리스트 토큰 간의 Uniswap 거래)을 즉시 수행할 수 있도록 볼트를 프로그래밍할 수도 있습니다.
보조 제목
기존 소셜 리커버리 지갑
현재 소셜 복구를 구현한 두 개의 주요 지갑인 Argent와 Loopring이 있습니다.
Argent Wallet은 최초이자 가장 인기 있는 "스마트 계약" 지갑이며 소셜 복구는 판매 포인트 중 하나입니다. Argent 지갑에 가디언을 추가하고 삭제할 수 있는 인터페이스가 추가되었습니다.
루프링 지갑은 아마도 루프링 프로토콜(지불 및 탈중앙화 거래소를 위한 ZK 롤업 계획)의 개발자와 지지자들에 의해 구축되었기 때문에 알려져 있을 것입니다. 그러나 Loopring 지갑에는 Argent와 매우 유사한 소셜 복구 기능도 있습니다. 두 경우 모두 지갑 공급자는 전화에서 전송된 확인 코드를 통해 사용자를 인증하는 무료 보호자를 제공합니다. 사용자는 이더리움 주소를 제공하여 동일한 지갑의 다른 사용자 또는 이더리움 사용자를 추가 보호자로 추가할 수 있습니다.
두 지갑의 사용자 경험은 매우 부드럽습니다. 두 가지 어려움이 있을 수 있습니다. 우선, 두 지갑의 원활한 운영은 서명된 트랜잭션을 다시 게시하기 위해 지갑 공급자의 "중앙 집중식" 릴레이어(릴레이어)에 의존하며, 두 번째로 수수료가 높습니다. 다행히 이 두 가지 문제는 모두 해결할 수 있습니다.
보조 제목
L2(롤업)로 마이그레이션하면 다른 문제를 해결할 수 있습니다.
위에서 언급한 바와 같이 두 가지 주요 과제가 있습니다. 1) 거래를 처리하기 위해 중계자에 의존하고 2) 높은 거래 수수료입니다. 릴레이어에 대한 의존도는 이더리움 애플리케이션에서 점점 더 일반적인 문제가 되고 있습니다. 이더리움에는 외부 계정(EOA)과 단일 개인 키로 제어되는 계약 계정의 두 가지 유형의 계정이 있기 때문에 문제가 발생합니다. 이더리움에는 모든 트랜잭션이 외부 계정에서 시작되어야 한다는 규칙이 있습니다. 원래 의도는 외부 계정이 "사용자"를 나타내고 계약 계정이 "응용 프로그램"을 나타내며 응용 프로그램은 사용자가 상호 작용할 때만 실행되도록 하는 것이었습니다. 더 복잡한 메커니즘(예: 다중 서명 및 소셜 복구)이 있는 지갑을 원하면 계약을 사용하여 사용자를 나타내야 합니다. 그러나 새로운 문제가 있습니다: 귀하의 자금이 계약 계정에 있는 경우 각 거래에 대해 지불하기 위해 ETH 잔액이 있는 다른 계정이 필요합니다. 거래 수수료가 급격히 상승하면 많은 양의 ETH가 필요할 수 있습니다.
기사의 내부 링크를 얻으려면 "원문 읽기"를 클릭하십시오!
기사의 내부 링크를 얻으려면 "원문 읽기"를 클릭하십시오!
원본 링크:https://vitalik.ca/general/2021/01/11/recovery.html
ECN의 번역 작업은 중국 이더리움 커뮤니티에 양질의 정보와 학습 자료를 전달하는 것을 목표로 하고 있으며, 기사의 저작권은 원저자에게 있으며, 전재 시 원문의 출처와 ETH 중국 웹사이트를 명시해야 합니다. 장기 재인쇄의 경우 승인을 위해 eth@ecn.co에 문의하십시오.


