Primeiro, um pouco de linguagem. A "mensagem" é uma unidade de comunicação entre dois ou mais participantes em uma rede blockchain. Ele pode conter qualquer tipo de dados e é comumente usado para obter aprovação digital de um usuário.
A "transação", por outro lado, é um tipo específico de mensagem que envolve a transferência de valor de um participante para outro. Geralmente inclui informações como o endereço do remetente, o endereço do destinatário, a quantidade de criptomoeda que está sendo transferida e uma assinatura digital que comprova a autorização do remetente para a transferência.
Os usuários já podem compensar transações de sinalização usando seus dispositivos Ledger, conforme detalhado nesta postagem, e estendemos essa boa prática usando os mesmos princípios também para mensagens. Veja como.
Por que assinamos mensagens no web3?
Blockchains são baseados em “criptografia de chave pública”, onde os usuários possuem uma chave pública e uma chave privada, que formam um par. A chave pública representa a identidade do proprietário e a chave privada é secreta, permitindo-lhes provar que possuem o par de chaves.
Ao assinar uma mensagem, você usa sua chave privada no algoritmo de assinatura para vincular uma assinatura à mensagem e à chave pública. Ninguém pode obter sua chave privada ou forjar uma assinatura válida para você. No entanto, qualquer pessoa que conheça a sua chave pública pode facilmente verificar se a mensagem foi assinada pela sua chave privada.
Resumindo, é o mesmo processo e ideia da assinatura de transações, exceto que estamos nos concentrando aqui na assinatura de mensagens que servem a um propósito diferente: subsídio. Estamos assinando mensagens em aplicativos criptográficos para obter o consentimento do usuário, assim como na vida real você usaria sua assinatura escrita em um papel. É a versão criptográfica da “assinatura fiduciária”.
A importância do EIP-712
Assinar mensagens não é uma coisa nova. Já há anos que conseguimos assinar mensagens, e elas podem assumir diferentes formatos e formas à medida que melhoram com o tempo. Na verdade, o Proposta de Melhoria Ethereum 191 (EIP-191) foi apresentado em 2016 e introduziu um padrão que permite mensagens legíveis por humanos, suportado nativamente por dispositivos Ledger. Porém, o que o EIP-191 deixou a desejar é que o padrão não estrutura os dados. É apenas uma sinopse de um comprimento ilimitado de dados no final da mensagem, tornando-o difícil de usar. Na prática, as mensagens são muitas vezes demasiado longas, acabando por ser truncadas e fazendo com que o utilizador perca informações potencialmente importantes; experiência de usuário ruim.
Como foi dito no início do Proposta de Melhoria Ethereum 712 (EIP-712): “Assinar dados é um problema resolvido se tudo o que nos importa são bytestrings. Infelizmente, no mundo real, nos preocupamos com mensagens complexas e significativas.” – Eu não poderia concordar mais. À medida que as mensagens cresceram para atender a operações mais complexas, a introdução de estruturas de dados digitadas nas mensagens, conforme especificado no EIP-712, foi uma mudança bem-vinda.
O que isso significa para os usuários é que agora os desenvolvedores podem analisar os dados da mensagem e saber o que é o quê, o que agora pode ser exposto ao usuário. Analisar significa poder ler o conteúdo, porque você sabe como ele está estruturado. Isso é uma virada de jogo em termos de experiência do usuário, mas também do ponto de vista da segurança, já que agora posso verificar o que estou assinando.
Voltando ao contexto de para que as mensagens são usadas, se você está pedindo a Alice para conceder permissão específica sobre o conteúdo de sua carteira, como desenvolvedor de aplicativos, você deve ser super explícito sobre isso para maximizar suas chances de ela prosseguir. Mas é mais do que apenas uma otimização da taxa de conversão.
Se você pensar em segurança e defesa em um ambiente adversário, um golpista obviamente tornará essa mensagem o mais opaca possível para enganar Alice e permitir essa operação maliciosa. A transparência e a capacidade de Alice verificar novamente o que está assinando são absolutamente essenciais.
E é aí que entra o EIP-712. Antes deste EIP, as mensagens assinadas eram uma string hexadecimal opaca exibida ao usuário com pouco contexto sobre os itens que compõem a mensagem.
Você assinaria isso? Alguma ideia do que você está autorizando aqui?
A especificação EIP-712 introduz estruturas de dados digitadas para mensagens que permitem que elas sejam analisadas por carteiras e exibidas de maneira amigável para Alice tomar uma decisão informada. Além disso, é um padrão e interoperável em toda a indústria: com suporte para EIP-712, sua mensagem pode ser analisada por Ledger, MetaMask, Rainbow, Argent, Coinbase Wallet, entre outros.
Suporte de razão para EIP-712
Em primeiro lugar, dias felizes, os dispositivos Ledger têm suporte nativo para mensagens EIP-712 e, como desenvolvedor, você pode controlar com precisão como suas mensagens são exibidas no dispositivo.
Existem essencialmente 3 níveis de suporte para mensagens em dispositivos Ledger:
Nível 1: Assinatura Cega
Se Bob, um desenvolvedor de aplicativos, não estiver usando mensagens EIP-712, Bob está essencialmente pedindo a Alice para assinar uma string hexadecimal ilegível: Bob está pedindo a Alice para assinar algo que ela nem consegue ler, isso é assinatura cega.
Nível 2: Assinatura Transparente
Implementando uma mensagem EIP-712, Bob está dando um passo à frente, passando de uma string hexadecimal para conteúdo legível. Agora permite que Alice leia o conteúdo da mensagem, no entanto, como está exibindo o conteúdo completo da mensagem para ela, é difícil identificar as principais informações que estão misturadas com informações técnicas. É transparente, mas ainda não está claro.
Nível 3: Assinatura Clara
Como o dispositivo pode analisar o conteúdo da mensagem, indicando o que exibir e como, podemos obter uma assinatura clara. Portanto, desde que Bob defina os metadados necessários, aqui está o que Alice veria em seu dispositivo Ledger:
Muito melhor do que uma string hexadecimal, não é?
Outro ponto fundamental é que, por ser exibido de forma totalmente segura, dispositivo separado que não pode ser adulterado, Alice tem 100% de certeza de que o que ela vê naquele dispositivo é o que ela está assinando: nenhum malware ou aplicativo malicioso pode alterar o que é exibido para ela. Se o que é exibido no dispositivo não corresponder às suas expectativas, ela poderá ficar segura e rejeitar a assinatura da mensagem.
Para fornecer essa experiência de usuário aprimorada e segurança extra aos seus usuários, Bob precisa fazer duas coisas: especifique quais campos devem ser exibidos ao usuário e forneça um nome de exibição explícito e agradável para eles.
Se, como desenvolvedor, você quiser se juntar ao Bob e fazer isso pelo seu aplicativo, você tem toda a documentação aqui, e basicamente se resume à criação de uma solicitação pull para colocar seu contrato na lista de permissões no dApps Asset Registry da Ledger por meio de um arquivo JSON contendo:
- Seletores para indicar quais campos o dispositivo precisa mostrar para Alice,
- Rotule cada seletor com um nome de exibição.
Isso não é cosmético, é uma boa prática
Ao colocar seu contrato inteligente na lista de permissões e indicar como os dispositivos Ledger podem exibir suas mensagens, você não apenas melhora significativamente a experiência do usuário ao interagir com seu aplicativo, mas, mais importante, protege todos nós contra golpes e ajuda a criar bons hábitos no ecossistema web3.
Nunca devemos assinar algo que não entendemos.
Não podemos fazer isso sem você, ajude-nos a tornar a assinatura clara a norma.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoAiStream. Inteligência de Dados Web3. Conhecimento Amplificado. Acesse aqui.
- Cunhando o Futuro com Adryenn Ashley. Acesse aqui.
- Compre e venda ações em empresas PRE-IPO com PREIPO®. Acesse aqui.
- Fonte: https://www.ledger.com/blog/securing-message-signing
- :é
- :não
- :onde
- $UP
- 1
- 2016
- 22
- 220
- a
- habilidade
- Capaz
- Sobre
- sobre isso
- absolutamente
- Alcançar
- em
- endereço
- adversarial
- algoritmo
- Todos os Produtos
- permitir
- Permitindo
- permite
- já
- tb
- quantidade
- an
- e
- Outro
- qualquer
- qualquer um
- app
- Aplicação
- aprovação
- SOMOS
- Argento
- AS
- ativo
- At
- autorização
- baseado
- BE
- Porque
- sido
- antes
- Começo
- ser
- Melhor
- entre
- Pouco
- blockchain
- rede blockchain
- grão
- construir
- mas a
- by
- CAN
- Cuidado
- fornecer
- chances
- alterar
- Changer
- remover filtragem
- coinbase
- Carteira Coinbase
- vem
- geralmente
- Comunicação
- integrações
- consentimento
- conteúdo
- conteúdo
- contexto
- contract
- ao controle
- Conversão
- Criar
- criptomoedas
- DApps
- dados,
- dias
- decisão
- Defesa
- detalhado
- Developer
- desenvolvedores
- dispositivo
- Dispositivos/Instrumentos
- diferente
- digital
- Ecrã
- exibindo
- do
- documentação
- Não faz
- não
- down
- cada
- facilmente
- ecossistema
- EIP
- final
- Meio Ambiente
- essencial
- essencialmente
- ethereum
- Mesmo
- Exceto
- expectativas
- vasta experiência
- exposto
- extra
- segurança extra
- fato
- Campos
- Envie o
- focando
- Escolha
- forjar
- formulário
- formas
- para a frente
- da
- cheio
- totalmente
- Além disso
- jogo
- jogador desafiante
- reunir
- ter
- gif
- vai
- Bom estado, com sinais de uso
- conceder
- mão
- feliz
- Queijos duros
- Ter
- ajudar
- ajuda
- sua experiência
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- HEX
- sua
- Como funciona o dobrador de carta de canal
- Contudo
- HTTPS
- legível para humanos
- i
- idéia
- Dados de identificação:
- if
- importância
- melhorar
- melhorado
- melhoria
- melhorar
- in
- inclui
- indicam
- indicador
- indústria
- INFORMAÇÕES
- informado
- interagindo
- interoperável
- introduzido
- Introduz
- Introdução
- IT
- Unid
- juntar
- jpg
- json
- apenas por
- Chave
- Saber
- Ledger
- Comprimento
- níveis
- vida
- LINK
- pequeno
- longo
- fazer
- Fazendo
- malwares
- maneira
- Match
- max-width
- Maximizar
- significativo
- significa
- mensagem
- mensagens
- metadados
- MetaMask
- desaparecido
- misto
- mais
- nome
- nativo
- Cria
- rede
- nunca
- Novo
- agradável
- não
- agora
- of
- frequentemente
- on
- ONE
- só
- opaco
- operação
- Operações
- otimização
- or
- Outros
- Fora
- Acima de
- próprio
- par
- Papel
- participantes
- permissão
- perspectiva
- platão
- Inteligência de Dados Platão
- PlatãoData
- ponto
- pobre
- possível
- potencialmente
- prática
- justamente
- princípios
- privado
- chave privada
- Problema
- processo
- proposta
- proteger
- Prove
- Prova
- fornecer
- fornecido
- público
- chave pública
- propósito
- Taxa
- Leia
- reais
- vida real
- mundo real
- registro
- representa
- solicitar
- requeridos
- resultando
- seguro
- mesmo
- scams
- Segredo
- seguro
- segurança
- Vejo
- vê
- servir
- conjunto
- formas
- ela
- Baixo
- rede de apoio social
- mostrar
- assinar
- assinado
- de forma considerável
- assinatura
- desde
- smart
- smart contract
- So
- algo
- específico
- especificação
- especificada
- Spot
- padrão
- estabelecido
- ficar
- Passo
- História
- Tanga
- estrutura
- estruturada
- apresentado
- tal
- super
- ajuda
- Suportado
- Apoiar
- Tire
- tecnologia
- condições
- do que
- que
- A
- deles
- Eles
- Este
- deles
- coisa
- coisas
- think
- isto
- aqueles
- Apesar?
- tempo
- para
- também
- Transações
- transferência
- transferido
- Transparência
- transparente
- dois
- tipo
- compreender
- infelizmente
- unidade
- ilimitado
- us
- usar
- usava
- Utilizador
- Experiência do Usuário
- user-friendly
- usuários
- utilização
- geralmente
- ux
- valor
- verificar
- via
- Wallet
- Carteiras
- queremos
- foi
- we
- Web3
- Ecossistema Web3
- boas-vindas
- BEM
- foram
- O Quê
- O que é a
- quando
- qual
- whitelist
- QUEM
- precisarão
- de
- sem
- mundo
- seria
- escrito
- anos
- Você
- investimentos
- zefirnet