Assinaturas estritas DER (Regras de Codificação Distintas) são um tipo de codificação usado para garantir a adequação de uma assinatura digital em qualquer ambiente, e são usadas em Bitcoins e criptomoedas para garantir a validade das assinaturas. digital. 

BO itcoin é sem dúvida um software criptográfico altamente especializado e uma demonstração disso pode ser vista no assinaturas DER estritas, uma implementação criptográfica que visa fornecer níveis mais elevados de segurança no protocolo, especialmente no sistema de assinatura de Bitcoin .

As assinaturas estritas DER (Regras de codificação distintas ou Regras de codificação distintas), Eles são um tipo de criptografia segura que é usado para garantir a adequação de uma assinatura digital em qualquer ambiente. Quer dizer, não importa se você carteira estiver em um computador, smartphone ou outro dispositivo, a codificação será a mesma e sua resolução será determinística do início ao fim. Isso é vital para o Bitcoin, pois garante que suas assinaturas digitais estarão protegidas sob vários critérios.. E para nós, usuários, nos dá a garantia de que o sistema possui altos padrões de segurança.

Agora, qual é a origem das assinaturas DER estritas? Quando começou seu desenvolvimento? Como eles funcionam e onde se aplicam? Examinaremos isso e muito mais a seguir.

O desenvolvimento de assinaturas DER estritas

Como você já deve saber, o Bitcoin usa assinaturas digitais do tipo ECDSA para garantir um alto nível de segurança em suas transações. O uso de ECDSA em conjunto com a curva criptográfica secp265k1, é o que protege o Bitcoin em termos de acesso aos seus fichas e nos dá a garantia de que nossos fundos não podem ser hackeados facilmente.

Para que o Bitcoin pudesse fazer uso dessas funções, inicialmente ele foi desenvolvido usando a biblioteca de segurança de criptografia OpenSSL, um conhecido projeto de software livre que no momento permanece um líder indiscutível em criptografia na indústria. No entanto, o OpenSSL passou por uma série de escândalos de segurança que, aos poucos, minaram a confiança no projeto.

Por exemplo, em 2009, durante o nascimento precoce do Bitcoin, OpenSSL apresentou uma vulnerabilidade séria (CVE-2008-5077) que afetou sua implementação de assinaturas ECDSA, deixando projetos como o Bitcoin vulneráveis. Outro problema sério apareceu em 2014 (CVE-2014-0076), que também afetou essa função. À medida que essas falhas, muitas outras começaram a surgir do projeto e antes dos eventos, Gregory Maxwell Ele afirmou que era hora de abandonar o OpenSSL e seus problemas constantes.

Essas etapas iniciais para migrar para outra implementação de criptografia segura foram posteriormente apoiadas por Pieter Wuille, que em 2015 introduziu o BIP-66 (BIP - Propostas de Melhorias de Bitcoin) chamado "Assinaturas DER estritas". Assim nasceu a implementação do DER que tomaria as rédeas do desenvolvimento em Bitcoin, e que deixaria o OpenSSL de lado junto com seus problemas e desrespeito aos padrões de segurança.

Desta forma, o novo padrão de assinatura DER de Bitcoin estrito se aplicaria a OP_CODES ou opcodes, OP_CHECKSIG, OP_CHECKSIGVERIFY, OP_CHECKMULTISIG ou OP_CHECKMULTISIGVERIFY, ao qual se aplica a verificação ECDSA e, portanto, deve ser codificado usando uma assinatura DER estrita.

Como funcionam as assinaturas DER estritas?

Basicamente, o que a codificação DER faz é; garantir que as verificações ECDSA estejam corretas em todos os momentos. Para isso, cada assinatura é verificada não só na formação, mas também na forma como foi codificada.

Primeiramente, as assinaturas ECDSA passam por uma verificação DER, que se encarrega de verificar se a codificação da assinatura está correta. Cada assinatura ECDSA deve ser cuidadosamente codificada (ou escrita) em Bitcoin, e qualquer modificação a este respeito indica que a assinatura não é confiável.

Nesse caso, o protocolo Bitcoin simplesmente rejeita a assinatura e interrompe a execução do Script Bitcoin associado a essa assinatura. No entanto, se a assinatura DER estrita for válida, mas a assinatura ECDSA não, a execução do Script Bitcoin associado acabará invalidando a assinatura no final de sua execução, quando ela não passar na verificação do script.

Em qualquer um dos dois casos descritos acima, podemos ter certeza de que as empresas ECDSA farão seu trabalho: manter nossos bitcoins e as operações que realizamos com eles seguros. E neste caso muito específico, as estritas assinaturas do DER nos ajudam a ter uma nova medida de segurança para manter essa operação em qualquer situação.

A especificação ou design utilizado pelo Bitcoin para sua implementação DER respeita os padrões da International Telecommunication Union (ITU - International Telecommunication Union), especificamente o padrão X.690-2015, o que deixa claro a alta qualidade da implementação.

Descrevendo como funciona

Como sabemos, uma assinatura digital em Bitcoin faz parte do scriptSigs e scriptWitnesses das transações. A referida assinatura consiste, na verdade, em uma codificação DER de uma assinatura ECDSA, à qual um byte do tipo sighash é adicionado.

Para gerar esta codificação, o seguinte procedimento é usado:

  1. O "Objeto Composto" é gerado usando 1 byte de informação e marcando-o com o código 0x30. Este objeto composto é a tupla dos valores (R, S) da assinatura ECDSA.
  2. O comprimento de 1 byte do objeto composto.
  3. O valor R da assinatura consiste em:
    1. Um tipo "inteiro" de 1 byte marcado 0x02
    2. Comprimento de 1 byte do inteiro
    3. bytes de valor R de comprimento variável
  4. O valor S da assinatura, que consiste em:
    1. Um tipo "inteiro" de 1 byte marcado 0x02
    2. Comprimento de 1 byte do inteiro
    3. bytes de valor S de comprimento variável
  5. O byte de tipo sighash

Como resultado desse esquema, as assinaturas DER são mais curtas do que suas contrapartes ECDSA, atingindo um máximo de 73 bytes (aproximadamente 73 caracteres). Isso é muito importante, pois facilita o manuseio, consome menos largura de banda quando enviado para a rede, reduzindo o overhead da rede e aumentando o número de transações que cabem em um bloco, aumentando a escalabilidade da rede.

Quanto você sabe, cryptonuta?

O uso indevido de assinaturas DER pode levar a uma bifurcação?

VERDADEIRO!

Pode parecer trivial, mas a representação incorreta de uma assinatura DER usando DER pode fazer com que uma blockchain seja forçada. Foi exatamente isso que aconteceu no Bitcoin e foi o que levou os desenvolvedores a criarem suas próprias ferramentas criptográficas para o projeto. Isso ocorre porque as assinaturas DER em um ou mais nós e mineradores podem variar, e tais variações podem levar a problemas de validação da cadeia, fazendo com que a cadeia principal seja dividida em duas ou mais partes.

Por que uma boa codificação DER é importante?

Em primeiro lugar, devemos lembrar que o ECDSA é um sistema de assinatura digital determinístico, portanto, sob qualquer critério, este algoritmo deve sempre retornar a mesma assinatura, nas mesmas condições de geração. Isso é essencial para a segurança e garantias de que duas assinaturas ECDSA nunca serão iguais. O mesmo se repete no caso da codificação DER; ou seja, há apenas um único fluxo de dados que codifica validamente certos valores fornecidos para uma assinatura ECDSA.

No entanto, existem algumas implementações com erros (como OpenSSL) que produzem codificações incorretas em alguns casos. Portanto, os verificadores de assinatura ECDSA costumam ser um pouco tolerantes no que aceitam. No Bitcoin, isso é inaceitável porque leva a erros de verificação de assinatura e quebra o consenso da rede. Diante de tais problemas, Desenvolvedores de Bitcoin decidiu criar sua própria implementação DER sob medida para as necessidades específicas do Bitcoin, evitando assim que outras implementações afetassem seu funcionamento.