WEB3DEV

Cover image for Suas preocupações para longe com Clear-sign - Ledger
Fatima Lima
Fatima Lima

Posted on • Atualizado em

Suas preocupações para longe com Clear-sign - Ledger

Principais tomadas de decisão:

  • Percorremos um longo caminho desde o início da Bitcoin, e a segurança das transações melhorou muito na última década.
  • A assinatura cega (blind-signing) ainda é comum no mundo DeFi, mas alternativas mais seguras e melhores estão agora disponíveis em suas carteiras de hardware Ledger.
  • "Não confie, verifique" - nosso lema nunca foi mais verdadeiro do que quando você clear-sign suas mensagens tanto on-chain quanto off-chain.

Um pouco de História

O ano é 2010. Você está com muita fome, o tipo de fome que só o Papa John pode satisfazer. Você pede 2 pizzas e decide pagar com Bitcoin. Tentando não pensar no delicioso molho de alho, você triplica a sequência de bytes que compõem sua transação bruta, com suor visível em sua testa. Você transmite sua transação assinada, sem ter certeza absoluta se esses últimos bytes deveriam ter sido dead ou beef...

Avançando rapidamente para 2018. Agora você está comercializando todos os tipos de tokens ERC20 com uma mão, enquanto come uma salada de frango caseira com a outra. Para assinar cada transação, você chicoteia seu Ledger Nano S, confiando completamente nas informações claras e detalhadas da transação exibidas na tela. Após apertar ambos os botões para validar, você estende a mão para mais um pouco de molho Caesar…

Estamos em 2021. Novos projetos de NFT aparecem à esquerda, à direita e ao centro. Você se tornou um colecionador de arte, comprando e vendendo tokens em movimento. Você verifica casualmente o nome da coleção e a identificação do token em seu Ledger Nano X enquanto troca seu BAYC mais barato por uma viagem ao ISS (International Space Station).

Image description

O Dia de Hoje

Como o mundo criptográfico tem evoluído na última década, também a segurança da Ledger tem enfrentado ameaças cada vez maiores. Nossa abordagem geral, no entanto, permaneceu inalterada:

  • Analise sua transação com segurança em nosso sistema de segurança
  • Exiba um resumo confiável em sua tela Nano
  • Assine com segurança a sequência original de bytes com sua chave privada

Esse processo pode ser resumido como WYSIWYS (O que você vê é o que você assina) que tem sido nosso lema constante por anos. É uma frase muito bonita para impressionar seus cunhados durante o jantar, mas por que ela é tão importante? E como fazemos que ela funcione para todos os diferentes tipos de ativos e interações de blockchains?

Vamos cobrir esta questão revisando os três níveis de assinatura de transações, que mapeiam bem a pirâmide Dados-Informação-Conhecimento:

Image description

Blind-signing - Dados

Vamos começar com um teste rápido: Você pode dizer o que aconteceria se você assinasse estes dados contratuais e os transmitisse na blockchain Ethereum?


0xcfc0afeb0000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000

00000000000000000000000000000000ac6ca00000000000000000000000000000000000000000000000004aac34fbb545d2f60000000000000000000000000000000000000000000000004cfb6e0b69108f

97000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000

0000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000003200000000000000000000000002cbd03487800e5ae9793db8d6017d909e676780a000000

00000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000001000000000000000000000000e7cbbd11be7f993197aef41c2d6df6e5f6867d890000000000000000000000000000000000000000000000000000000000000002beef0000000000

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000

000000000000000000000000000000000000000000000000000000000000000000000000c4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076c65646765723200000000000000000000000000000000000000000000000000

Enter fullscreen mode Exit fullscreen mode

Dados contratuais seguros, você pode confiar em mim, juro

Se não estiver imediatamente claro para você, não há nada de errado com você, caro leitor, você é simplesmente um humano de carne e osso.

Este formato, embora muito eficiente, não foi projetado para nós, mas para computadores. Armados apenas com nossos olhos, somos incapazes de dizer se os fundos estão sendo transferidos, quanto e para quem... Referimo-nos à assinatura destes dados brutos como Blind-signing (Assinatura cega): Você pega uma sequência indecifrável de bytes e os assina cegamente com sua chave privada, permitindo que, independentemente do que ele contenha, seja executado on-chain sem revisá-lo adequadamente.

Embora fazer isso tenha sido praticamente a norma no mundo DeFi por vários anos, porque torna a interação com os DApps tão fácil, infelizmente também é terrivelmente insegura. Como o CXO da Ledger aponta corretamente, "Assinatura cega é como sexo inseguro: é incrível, até não ser"!.

Se um invasor mudasse apenas alguns bytes na transação acima, eles poderiam facilmente roubar seus fundos, e você provavelmente não seria capaz de dizer a diferença no momento da assinatura.

Outro efeito colateral perigoso da assinatura cega é que você passa a ter o hábito de aprovar praticamente tudo o que lhe é solicitado. Neste ponto, você confia plenamente em qualquer DApp com o qual interage, o que provou ser um mau hábito antigo.

Twitter

Não é a primeira ou última pessoa a perder NFTs para a assinatura cega

Em resumo, nenhuma quantidade de segurança de hardware ou software pode proteger seus fundos se você decidir assinar cegamente todas as transações que um terceiro lhe enviar. Uma melhor abordagem para assinatura é tornar o conteúdo legível ao olho humano.

Transparent-signing (Assinatura transparente) - Informação

Embora as sequências de bytes que compõem as transações em blockchain possam parecer enigmáticas, todas elas têm uma estrutura bem definida. Usando a descrição correta do formato, é possível analisar essas transações para torná-las humanamente legíveis.


{

   "function": "simpleSwap",

   "arguments": {

       "fromToken": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",

       "toToken": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",

       "fromAmount": 5830000000,

       "toAmount": 5300000000000000000,

       "expectedAmount": 5300000000000000000,

       "callees": [0xE7CbBD11bE7f993197aEF41C2D6dF6e5F6867d89],

       "exchangeData": "0xbeef",

       "startIndexes": [0, 196],

       "values": [0],

       "beneficiary": "0x2cBd03487800E5Ae9793dB8d6017D909E676780A",

       "referrer": "ledger2",

       "useReduxToken": false

   }

}

Enter fullscreen mode Exit fullscreen mode

Transação analisada utilizando a ABI do contrato

Neste caso, usamos a Interface Binária de Aplicação, ou ABI, do contrato com o qual estamos interagindo e a análise resultante é muito mais agradável! Agora, antes de assinar, posso facilmente verificar isso:

  • Estou realmente chamando uma função swap,
  • Os tokens 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 e 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE estão sendo trocados,
  • As quantias trocadas são 5830000000 e 5300000000000000000.

Se você é um expert em tokens ERC20, você deve ter observado que o primeiro é USDC. Mas, e o 0xEeeee…? Este não é um endereço de queima, o que significaria que você está destruindo seu USDC, e não trocando-o? Além disso, os valores parecem bastante grandes, mas isso é porque eles estão na menor unidade de cada token e você precisará contar cuidadosamente os zeros para garantir que não esteja sendo enganado.

Finalmente, alguns campos como referrer, não importam para a segurança de sua transação, mas você não pode saber disso a menos que você tenha cavado no próprio código do contrato inteligente.

Como você pode ver, há espaço para melhorias na forma como exibimos as transações. Embora estejamos inegavelmente avançando, pois agora estamos acessando informações em vez de dados puros brutos, ainda nos falta o contexto para entender o que está acontecendo nesta transação.

Clear-signing (Assinatura clara) - Conhecimento

Não podemos esperar que nossos usuários estejam intimamente familiarizados com todos os protocolos que utilizam em sua jornada DeFi. De preferência gostaríamos de mostrar um resumo das transações que seja fácil de revisar e entender. Algo do tipo:

Swapping 5830 USDC for 5.3 ETH on address 0x2cBd03487800E5Ae9793dB8d6017D909E676780A
Enter fullscreen mode Exit fullscreen mode

Para produzir este display final de clear-signing, tivemos que:

  • Limitar o número de campos aos que são importantes para a segurança do usuário.
  • Interpretar o endereço 0xEeeee… e substituí-lo por uma referência à ETH. De fato, é isso que este endereço realmente significa para o contrato em questão.
  • Converter os valores em suas respectivas unidades principais, ETH e USDC, o que elimina os 0s difíceis de contar.

Você pode mostrar as informações acima a qualquer um, e eles compreenderão imediatamente o que está acontecendo com seus fundos. Esta representação clara da transação só é possível se você tiver conhecimento detalhado do contrato com o qual você está interagindo.

Na Ledger, nós consideramos a Clear-signing como sendo o único método aceitável de assinatura, já que é a única maneira inteligível de aprovar uma transação com total conhecimento do seu conteúdo e impacto. Não é um conceito novo de forma alguma, mas está na raiz do que tornou a Ledger Nano S um sucesso tão grande no mundo criptográfico. No entanto, este nível de clareza não é simples para todo tipo de interação. Novos tipos de contratos e chamadas de funções complexas são criadas todos os dias, e isso requer revisões de segurança minuciosas, bem como atenção detalhada à UX para aceitá-las com segurança em nossos produtos.

Confiando no analista

Embora os métodos avançados de assinatura que cobrimos melhorem a segurança das interações em blockchain, eles também introduzem problemas que não tínhamos inicialmente.

Com o Blind-signing, você recebe os dados brutos exatos para assinatura. É difícil para um humano ler, mas é fiel à abordagem "O que você vê é o que você assina", desde que você não se importe de não entender o que está em sua tela. Com a Clear-sign e a assinatura transparente, você recebe uma versão transformada dos dados originais. Se a conversão dos dados brutos, em um resumo legível, não for devidamente assegurada, um invasor poderá modificá-la antes de ser exibida em sua tela, podendo assim enganá-lo para que você assine seus fundos.

Felizmente, nós também pensamos nisso na Ledger! Além de proteger sua chave privada, nossas carteiras de hardware também garantem que você possa confiar nos dados exibidos em suas telas. Tanto a segurança da chave quanto da tela são reforçadas por nosso dispositivo de segurança, e a análise é constantemente revisada por nosso renomado time de segurança, o Donjon.

Finalmente, ao mergulhar no mundo da DeFi, é essencial lembrar que, em última instância, você confia que contratos inteligentes com os quais interage, se comportem como esperado. Sempre tenha cuidado com quais contratos você usa e se eles foram revisados ou auditados.

Image description

O que vem a seguir?

Após o aumento estratosférico da criptografia e sua crescente adoção na última década, a necessidade de um ambiente seguro nunca foi tão crítica. Os golpistas e hackers estão sempre procurando maneiras criativas de enganar usuários novos e experientes para compartilhar sua chave privada.

Entretanto, quanto mais as pessoas usam dispositivos Ledger para sua segurança, mais difícil se torna para estes invasores invadirem suas carteiras criptográficas. Isto os deixa com um último recurso: te enganar em operações de assinatura cega que transferem sobre todos os seus macacos e gatos de graça.

Trazer absoluta transparência e segurança para cada uma de suas transações é o que buscamos na Ledger. Acreditamos firmemente que somente uma clear-signing baseada em hardware pode lhe dar a paz de espírito que você merece.

Como você deve ter visto durante o último Ledger Op3n, implementar isto em todas as nossas linhas de produtos é um trabalho fascinante, e é o foco de nossos próximos artigos. Fique atento!

Este artigo foi escrito por Yacine Badiss, traduzido por Fátima Lima e seu original pode ser lido aqui.

Latest comments (0)