Agradecimentos especiais a Itamar Lesuisse da Argent e Daniel Wang da Loopring pelo feedback. Um dos grandes desafios em tornar os aplicativos de criptomoeda e blockchain utilizáveis para usuários comuns é a segurança: como evitamos que os fundos dos usuários sejam perdidos ou roubados? Perdas e roubos são um problema sério, muitas vezes custando aos usuários inocentes da blockchain milhares de dólares ou mesmo, em alguns casos, a maior parte de todo o seu patrimônio líquido. Muitas soluções foram propostas ao longo dos anos: carteiras de papel, carteiras de hardware e minha favorita: . carteiras multisig E, de fato, eles levaram a melhorias significativas na segurança. No entanto, todas essas soluções sofreram com vários defeitos - às vezes fornecendo muito menos proteção extra contra roubo e perda do que o realmente necessário, às vezes sendo incômodas e difíceis de usar, levando a uma adoção muito baixa e, às vezes, ambas. Mas, recentemente, surgiu uma alternativa melhor: um novo tipo de carteira de contrato inteligente chamada carteira . de recuperação social Essas carteiras podem potencialmente fornecer um alto nível de segurança e uma usabilidade muito melhor do que as opções anteriores, mas ainda há um caminho a percorrer antes que elas possam ser implantadas de maneira fácil e ampla. Esta postagem abordará o que são carteiras de recuperação social, por que são importantes e como podemos e devemos avançar para uma adoção muito mais ampla delas em todo o ecossistema. A segurança da carteira é um problema realmente grande Os problemas de segurança da carteira têm sido uma pedra no sapato do ecossistema blockchain quase desde o início. As perdas e roubos de criptomoedas eram desenfreados mesmo em 2011, quando o Bitcoin era quase a única criptomoeda existente; de fato, em meu papel pré-Ethereum como cofundador e redator da , escrevi um artigo inteiro detalhando os horrores dos hacks, perdas e roubos que já estavam acontecendo na época. Bitcoin Magazine Aqui está uma amostra: Ontem à noite, por volta das 21h PDT, cliquei em um link para ir para CoinChat[.]freetzi[.]com - e fui solicitado a executar o java. Eu fiz (pensando que este era um chatom legítimo), e nada aconteceu. Fechei a janela e não pensei nisso. Abri minha carteira bitcoin-qt aproximadamente 14 minutos depois e vi uma transação que NÃO aprovei ir para a carteira 1Es3QVvKN1qA2p6me7jLCVMZpQXVXWPNTC para quase toda a minha carteira... As perdas dessa pessoa foram de 2,07 BTC, no valor de $ 300 na época e mais de $ 70.000 hoje. Aqui está mais um: Em junho de 2011, o membro do Bitcointalk "allinvain" perdeu 25.000 BTC (no valor de $ 500.000 na época) depois que um intruso desconhecido de alguma forma obteve acesso direto ao seu computador. O invasor conseguiu acessar o arquivo wallet.dat do allinvain e rapidamente esvaziá-lo – enviando uma transação do próprio computador do allinvain ou simplesmente carregando o arquivo wallet.dat e esvaziando-o em sua própria máquina. Em valores atuais, isso representa uma perda de . Mas o roubo não é a única preocupação; também há perdas por perder as chaves privadas. Aqui está Stefan Thomas: quase um bilhão de dólares O desenvolvedor do Bitcoin, Stefan Thomas, tinha três backups de sua carteira – um pendrive criptografado, uma conta do Dropbox e uma máquina virtual Virtualbox. No entanto, ele conseguiu apagar dois deles e esquecer a senha do terceiro, perdendo para sempre o acesso a 7.000 BTC (no valor de $ 125.000 na época). A reação de Thomas: "[Estou] bastante dedicado a criar clientes melhores desde então." Uma análise do ecossistema Bitcoin sugere que - mais de dez vezes mais do que os usuários de Bitcoin e, ao longo dos anos, somando até . 1.500 BTC podem ser perdidos todos os dias gastam em taxas de transação 20% do suprimento total As histórias e os números apontam para a mesma verdade inescapável: . a importância do problema de segurança da carteira é grande e não deve ser subestimada É fácil ver as razões sociais e psicológicas pelas quais a segurança da carteira é fácil de subestimar: as pessoas naturalmente se preocupam em parecer descuidadas ou burras na frente de um público sempre crítico, e muitas guardam para si mesmas suas experiências com seus fundos sendo hackeados. A perda de fundos é ainda pior, pois há um sentimento generalizado (embora, na minha opinião, muito incorreto) de que "não há ninguém para culpar além de você". Mas a realidade é que , blockchains incluídos, é tornar mais fácil para os humanos se envolverem em tarefas muito complicadas sem ter que exercer um esforço mental extremo ou viver com medo constante de cometer erros. todo o objetivo da tecnologia digital Um ecossistema cuja única resposta para perdas e roubos é uma combinação de tutoriais de 12 passos, meias medidas não muito seguras e o não tão ocasional semi-sarcástico "desculpe pela sua perda" terá dificuldade em obter ampla adoção. Portanto, soluções que reduzem a quantidade de perdas e roubos ocorridos, sem exigir que todos os usuários de criptomoeda transformem a segurança pessoal em um hobby em tempo integral, são altamente valiosas para o setor. As carteiras de hardware sozinhas não são boas o suficiente As carteiras de hardware costumam ser apontadas como a melhor tecnologia da categoria para gerenciamento de fundos de criptomoedas. Uma carteira de hardware é um dispositivo de hardware especializado que pode ser conectado ao seu computador ou telefone (por exemplo, através de USB) e que contém um chip especializado que só pode gerar chaves privadas e assinar transações. Uma transação seria iniciada em seu computador ou telefone, deve ser confirmada na carteira de hardware antes de ser enviada. A chave privada permanece em sua carteira de hardware, portanto, um invasor que invade seu computador ou telefone pode drenar os fundos. não As carteiras de hardware são uma melhoria significativa e certamente teriam protegido a vítima da sala de bate-papo Java, mas não são perfeitas. Vejo dois problemas principais com carteiras de hardware: : se você comprar uma carteira de hardware, estará confiando em vários atores envolvidos em sua produção - a empresa que projetou a carteira, a fábrica que a produziu e todos os envolvidos no envio que poderiam tê-la substituído por um falso. Ataques à cadeia de suprimentos As carteiras de hardware são potencialmente um ímã para esses ataques: a proporção de fundos roubados em relação ao número de dispositivos comprometidos é muito alta. Para seu crédito, os fabricantes de carteiras de hardware, como a Ledger, colocaram muitas salvaguardas para se proteger contra esses riscos, mas alguns riscos ainda permanecem. Um dispositivo de hardware fundamentalmente não pode ser auditado da mesma forma que um software de código aberto. : se alguém roubar sua carteira de hardware logo após ficar atrás de você e pegar você digitando o PIN, eles podem roubar seus fundos. Ainda há um único ponto de falha Se você perder sua carteira de hardware, perderá seus fundos - a menos que a carteira de hardware gere e gere um backup no momento da configuração, mas, como veremos, eles têm seus próprios problemas... Frases mnemônicas não são boas o suficiente Muitas carteiras, tanto de hardware quanto de software, têm um procedimento de configuração durante o qual produzem uma , que é uma codificação legível de 12 a 24 palavras da chave privada raiz da carteira. Uma frase mnemônica se parece com isso: frase mnemônica vote dance type subject valley fall usage silk essay lunch endorse lunar obvious race ribbon key already arrow enable drama keen survey lesson cruel Se você perder sua carteira, mas tiver a frase mnemônica, poderá inseri-la ao configurar uma nova carteira para recuperar sua conta, pois a frase mnemônica contém a chave raiz a partir da qual todas as outras chaves podem ser geradas. Frases mnemônicas são boas para proteção contra perda, mas não fazem nada contra roubo. Pior ainda, eles adicionam um vetor para roubo: se você tiver a combinação padrão de carteira de hardware + backup mnemônico, alguém roubar sua carteira de hardware + PIN seu backup mnemônico poderá roubar seus fundos. novo que ou Além disso, manter uma frase mnemônica e não jogá-la fora acidentalmente é em si um esforço mental nada trivial. Os problemas com roubo podem ser amenizados se você dividir a frase ao meio e dar a metade para o seu amigo, mas (i) quase ninguém realmente promove isso, (ii) há problemas de segurança, como se a frase fosse curta (128 bits) então um atacante sofisticado e motivado que rouba uma peça pode ser capaz de usar força bruta em todas as \(2^{64}\) combinações possíveis para encontrar a outra, e (iii) isso aumenta ainda mais a sobrecarga mental. Então, o que precisamos? O que precisamos é de um design de carteira que satisfaça três critérios principais: : não há uma única coisa (e idealmente, nenhuma coleção de coisas que viajam juntas) que, se roubada, pode dar a um invasor acesso aos seus fundos ou, se perdida, pode negar o acesso aos seus fundos. Nenhum ponto único de falha : tanto quanto possível, não deve exigir que os usuários aprendam novos hábitos estranhos ou exerçam esforço mental para sempre lembrar de seguir certos padrões de comportamento. Baixa sobrecarga mental : a maioria das atividades normais não deve exigir muito mais esforço do que em carteiras regulares (por exemplo, Status, Metamask...) Máxima facilidade de transação Multisig é bom! A melhor tecnologia da categoria para resolver esses problemas era multisig. Você pode ter uma carteira com três chaves, onde quaisquer duas delas são necessárias para enviar uma transação. em 2013 Esta tecnologia foi originalmente desenvolvida dentro do ecossistema Bitcoin, mas excelentes carteiras multisig (por exemplo, veja ) agora também existem para Ethereum. Gnosis Safe As carteiras multisig têm sido muito bem-sucedidas dentro das organizações: a Ethereum Foundation usa uma carteira multisig 4 de 7 para armazenar , assim como muitas outras organizações no ecossistema Ethereum. seus fundos Para uma carteira multisig manter os fundos de um , o principal desafio é: quem detém os fundos e como as transações são aprovadas? A fórmula mais comum é alguma variante de "duas chaves facilmente acessíveis, mas separadas, mantidas por você (por exemplo, laptop e telefone) e uma terceira mais segura, mas menos acessível, um backup, mantido offline ou por um amigo ou instituição". indivíduo Isso é razoavelmente seguro: não há um único dispositivo que possa ser perdido ou roubado que o leve a perder o acesso aos seus fundos. Mas a segurança está longe de ser perfeita: se você pode roubar o laptop de alguém, muitas vezes não é tão difícil roubar o telefone também. A usabilidade também é um desafio, já que toda transação agora requer duas confirmações com dois dispositivos. A recuperação social é melhor Isso nos leva ao meu método preferido para garantir uma carteira: recuperação social. Um sistema de recuperação social funciona da seguinte forma: Existe uma única "chave de assinatura" que pode ser usada para aprovar transações Existe um conjunto de pelo menos 3 (ou um número muito maior) de "guardiões", dos quais a maioria pode cooperar para alterar a chave de assinatura da conta. A chave de assinatura tem a capacidade de adicionar ou remover guardiões, embora somente após um atraso (geralmente de 1 a 3 dias). Em todas as circunstâncias normais, o usuário pode simplesmente usar sua carteira de recuperação social como uma carteira normal, assinando mensagens com sua chave de assinatura para que cada transação assinada possa ser executada com um único clique de confirmação, como faria em uma carteira "tradicional" como a Metamask . Se um usuário sua chave de assinatura, é quando a funcionalidade de recuperação social entrará em ação. O usuário pode simplesmente entrar em contato com seus responsáveis e pedir que assinem uma transação especial para alterar a chave pública de assinatura registrada no contrato da carteira para uma nova . perder Isso é fácil: eles podem simplesmente acessar uma página da Web como , entrar, ver uma solicitação de recuperação e assiná-la. Tão fácil para cada guardião quanto fazer uma troca Uniswap. security.loopring.io Existem muitas escolhas possíveis para selecionar como guardião. As três escolhas mais comuns são: Outros dispositivos (ou mnemônicos de papel) pertencentes ao próprio portador da carteira Amigos e familiares Instituições, que assinariam uma mensagem de recuperação se obtivessem uma confirmação de seu número de telefone ou e-mail ou talvez em casos de alto valor verificassem você pessoalmente por videochamada. Os tutores são fáceis de adicionar: você pode adicionar um tutor simplesmente digitando seu nome ENS ou endereço ETH, embora a maioria das carteiras de recuperação social exijam que o tutor assine uma transação na página de recuperação para concordar em ser adicionado. Em qualquer carteira de recuperação social bem projetada, o guardião NÃO precisa baixar e usar a mesma carteira; eles podem simplesmente usar sua carteira Ethereum existente, seja qual for o tipo de carteira. Dada a grande conveniência de adicionar guardiões, se você tiver a sorte de que seus círculos sociais já sejam compostos por usuários Ethereum, eu pessoalmente sou a favor de contagens altas de guardiões (idealmente 7+) para aumentar a segurança. Se você já possui uma carteira, não é necessário nenhum esforço mental contínuo para ser um guardião: todas as operações de recuperação que você fizer serão feitas por meio de sua carteira existente. Se você não conhece muitos outros usuários ativos do Ethereum, então um número menor de guardiões que você confia para serem tecnicamente competentes é o melhor. Para reduzir o risco de ataques a tutores e conluio, . Isso pode ser feito de duas maneiras. seus tutores não precisam ser conhecidos publicamente: na verdade, eles não precisam saber a identidade uns dos outros Primeiro, em vez de os endereços dos guardiões serem armazenados diretamente na cadeia, um hash da lista de endereços pode ser armazenado na cadeia, e o proprietário da carteira só precisaria publicar a lista completa no momento da recuperação. Em segundo lugar, cada guardião pode ser solicitado a gerar de forma determinística um novo endereço de propósito único que eles usariam apenas para aquela recuperação específica; eles não precisariam realmente enviar nenhuma transação com esse endereço, a menos que uma recuperação seja realmente necessária. Para complementar essas proteções técnicas, ; essas recomendações juntas tornariam extremamente difícil para os guardiões serem atacados simultaneamente ou em conluio. recomenda-se escolher um conjunto diversificado de tutores de diferentes círculos sociais (incluindo, idealmente, um tutor institucional) No caso de você morrer ou ficar permanentemente incapacitado, seria um protocolo padrão socialmente acordado que os guardiões pudessem se anunciar publicamente, para que, nesse caso, eles pudessem se encontrar e recuperar seus fundos. As carteiras de recuperação social não são uma traição, mas sim uma de "valores criptográficos" expressão Uma resposta comum a sugestões para usar qualquer forma de multisig, recuperação social ou outra, é a ideia de que esta solução remonta a "confiar nas pessoas" e, portanto, é uma traição aos valores da indústria de blockchain e criptomoeda. Embora eu entenda por que alguém pode pensar isso à primeira vista, eu diria que essa crítica decorre de um mal-entendido fundamental sobre o que a criptografia deveria ser. Para mim, o objetivo da criptografia nunca foi eliminar a necessidade de a confiança. toda : dar a alguém o poder de fazer algumas coisas em seu nome sem dar-lhes o poder de fazer tudo. Em vez disso, o objetivo da criptografia é dar às pessoas acesso a blocos de construção criptográficos e econômicos que dão às pessoas mais em quem confiar e, além disso, permitir que as pessoas construam formas de confiança mais opções restritas Visto desta forma, : cada participante tem influência sobre a capacidade de aceitar ou rejeitar transações, mas ninguém pode movimentar fundos unilateralmente. o multisig e a recuperação social são uma expressão perfeita deste princípio alguma Essa lógica mais complexa permite uma configuração muito mais segura do que seria possível se houvesse uma pessoa ou chave que controlasse unilateralmente os fundos. Essa ideia fundamental, de que as informações humanas devem ser manejadas com cuidado, mas não descartadas imediatamente, é poderosa porque funciona bem com os pontos fortes e fracos do cérebro humano. O cérebro humano é muito pouco adequado para lembrar senhas e rastrear carteiras de papel, mas é um ASIC para acompanhar os relacionamentos com outras pessoas. Esse efeito é ainda mais forte para usuários menos técnicos: eles podem ter mais dificuldade com carteiras e senhas, mas são igualmente hábeis em tarefas sociais como "escolha 7 pessoas que não vão me atacar". Se extrair pelo menos algumas informações de entradas humanas em um mecanismo, sem que essas entradas se transformem em um vetor de ataque e exploração, devemos descobrir como. pudermos E a recuperação social é muito robusta: para que uma carteira com 7 guardiões seja comprometida, 4 dos 7 guardiões precisariam se descobrir de alguma forma e concordar em roubar os fundos, sem deles avisasse o dono: certamente um desafio muito mais difícil do que atacar uma . que nenhum carteira protegida apenas por um único indivíduo Como a Recuperação Social Pode Proteger Contra Roubo? A recuperação social, conforme explicado acima, lida com o risco de você sua carteira. Mas ainda existe o risco de sua chave de assinatura ser : alguém invade seu computador, se esgueira por trás de você enquanto você já está conectado e bate em sua cabeça ou até mesmo usa alguma falha na interface do usuário para induzi-lo a assinar uma transação que você não pretendia assinar. perder roubada Podemos estender a recuperação social para lidar com esses problemas adicionando um . Cada carteira de recuperação social pode vir com um cofre gerado automaticamente. Os ativos podem ser movidos para o cofre apenas enviando-os para o endereço do cofre, mas podem ser movidos para fora do cofre apenas com um atraso de 1 semana. cofre Durante esse atraso, a chave de assinatura (ou, por extensão, os responsáveis) pode cancelar a transação. Se desejado, o cofre também pode ser programado para que algumas operações financeiras limitadas (por exemplo, negociações Uniswap entre alguns tokens da lista branca) possam ser feitas sem demora. Carteiras de Recuperação Social Existentes Atualmente, as duas principais carteiras que implementaram a recuperação social são a e a : carteira Argent carteira Loopring A carteira Argent é a primeira grande, e ainda a mais popular, "carteira de contrato inteligente" atualmente em uso, e a recuperação social é um de seus principais pontos de venda. A carteira Argent inclui uma interface pela qual os guardiões podem ser adicionados e removidos: Para proteger contra roubo, a carteira tem um limite diário: as transações até esse valor são instantâneas, mas as transações acima desse valor exigem a aprovação dos responsáveis para finalizar o saque. A carteira Loopring é mais conhecida por ser construída pelos desenvolvedores (e, claro, incluindo suporte para) o , um para pagamentos e câmbio descentralizado. Mas a carteira Loopring também possui um recurso de recuperação social, que funciona de maneira muito semelhante à do Argent. protocolo Loopring pacote ZK Em ambos os casos, as empresas de carteira fornecem gratuitamente um guardião, que conta com um código de confirmação enviado pelo celular para autenticá-lo. Para os outros guardiões, você pode adicionar outros usuários da mesma carteira ou qualquer usuário Ethereum fornecendo seu endereço Ethereum. A experiência do usuário em ambos os casos é surpreendentemente suave. Havia dois desafios principais. Primeiro, a suavidade em ambos os casos depende de um "retransmissor" central executado pelo fabricante da carteira que republica as mensagens assinadas como transações. Em segundo lugar, as taxas são altas. Felizmente, esses dois problemas são superáveis. A migração para a camada 2 (rollups) pode resolver os desafios restantes Conforme mencionado acima, . O primeiro desafio, a dependência de retransmissores, é um problema cada vez mais comum nas aplicações Ethereum. existem dois desafios principais: (i) a dependência de retransmissores para resolver transações e (ii) altas taxas de transação A questão surge porque existem dois tipos de contas no Ethereum: , que são contas controladas por uma única chave privada, e . No Ethereum, existe uma regra de que toda transação deve começar a partir de um EOA; a intenção original era que os EOAs representassem "usuários" e os contratos representassem "aplicativos", e um aplicativo só poderia ser executado se um usuário falasse com o aplicativo. contas de propriedade externa (EOAs) contratos Se quisermos carteiras com políticas mais complexas, como multisig e social recovery, precisamos usar contratos para representar os usuários. Mas isso representa um desafio: se seus fundos estão em um contrato, você precisa ter alguma conta que tenha ETH que possa pagar para iniciar cada transação, e precisa de bastante ETH para o caso de as taxas de transação ficarem muito altas. outra Argent e Loopring contornam esse problema executando pessoalmente um "retransmissor". O retransmissor escuta "mensagens" assinadas digitalmente fora da cadeia enviadas pelos usuários e envolve essas mensagens em uma transação e as publica na cadeia. Mas, a longo prazo, essa é uma solução ruim; adiciona um ponto extra de centralização. Se o retransmissor estiver inoperante e um usuário realmente precisar enviar uma transação, ele sempre poderá enviá-la de seu próprio EOA, mas, no entanto, é introduzido um novo compromisso entre centralização e inconveniência. Há esforços para solucionar esse problema e obter comodidade sem centralização; as duas categorias principais giram em torno de fazer uma ou modificar o próprio protocolo Ethereum para . Mas nenhuma dessas soluções resolve as taxas de transação e, de fato, elas pioram o problema devido à complexidade inerentemente maior dos contratos inteligentes. rede de retransmissora descentralizada generalizada permitir que as transações comecem a partir de contratos Felizmente, resolver esses dois problemas ao mesmo tempo, buscando uma terceira solução: mover o ecossistema , como rollups otimistas e rollups ZK. podemos para os protocolos da camada 2 Os rollups otimistas e ZK podem ser projetados com abstração de conta incorporada, contornando qualquer necessidade de retransmissores. Os desenvolvedores de carteiras existentes já estão analisando os rollups, mas migrar para rollups em massa é um desafio em todo o ecossistema. Uma migração em massa em todo o ecossistema para rollups é uma oportunidade tão boa quanto qualquer outra para reverter os erros anteriores do ecossistema Ethereum e dar às carteiras multisig e contratos inteligentes um papel muito mais central para ajudar a proteger os fundos dos usuários. Mas isso requer um reconhecimento mais amplo de que a segurança da carteira é um desafio e que não fomos tão longe na tentativa de enfrentar e desafiar quanto deveríamos. Multisig e recuperação social não precisam ser o fim da história; pode muito bem haver designs que funcionem ainda melhor. Mas a simples reforma de mudar para rollups e garantir que esses rollups tratem carteiras de contratos inteligentes como é um passo importante para fazer isso acontecer. cidadãos de primeira classe Também publicado aqui.