¿Qué son las firmas estrictas DER?

Las firmas estrictas DER (Distinguished Encoding Rules o bien Reglas de codificación distinguidas), son un género de codificación que se emplea para asegurar la pertinencia de una firma digital bajo cualquier entorno, y son utilizadas en Bitcoin y las criptomonedas para asegurar la valía de las firmas digitales. 

Bitcoin es, sin ningún género de dudas, un software criptográfico enormemente especializado y una demostración de esto podemos verla en las firmas estrictas DER, una implementación criptográfica dirigida a brindar mayores niveles de seguridad en el protocolo, singularmente en el sistema de firmas de Bitcoin.

Las firmas estrictas DER (Distinguished Encoding Rules o bien Reglas de codificación distinguidas), son un género de codificación segura que se utiliza para asegurar la pertinencia de una firma digital bajo cualquier entorno. O sea, no importa si tu wallet está en un computador, móvil inteligente o bien otro dispositivo, la codificación de exactamente la misma va a ser exactamente la misma y su resolución va a ser determinista de principio a fin. Esto resulta esencial para Bitcoin, puesto que garantiza que sus firmas digitales van a ser seguras bajo diferentes criterios. Y para nosotros los usuarios, nos ofrece la seguridad de que el sistema tiene altos estándares de seguridad.

Ahora ¿Cuál es el origen de las firmas estrictas DER? ¿En qué momento empezó su desarrollo? ¿De qué forma marchan y dónde se aplican? Esto y considerablemente más lo examinaremos ahora.

El desarrollo de las firmas estrictas DER

Como ya vas a saber, Bitcoin emplea firmas digitales del tipo ECDSA para asegurar un elevado nivel de seguridad en sus transacciones. El empleo de ECDSA así como la curva criptográfica secp265k1, es lo que acoraza a Bitcoin en lo que se refiere al acceso de sus tokens y nos da la seguridad de que nuestros fondos no van a poder ser hackeados de manera fácil.

Para que Bitcoin usara estas funciones, en un inicio este fue desarrollado utilizando la librería de criptoseguridad OpenSSL, un conocido proyecto de software libre que por el momento se sostiene como un líder incontrovertible de criptografía en la industria. No obstante, OpenSSL se ha visto atravesado por una serie de escándalos de seguridad que poquito a poco han ido menguando la confianza en el proyecto.

Por ejemplo, en dos mil nueve a lo largo del temprano nacimiento de Bitcoin, OpenSSL presentó una grave vulnerabilidad (CVE-dos mil ocho-5077) que afectaba a su implementación de firmas ECDSA, dejando frágil a proyectos como Bitcoin. Otro arduo problema se presentó en dos mil catorce (CVE-dos mil catorce-0076), el que asimismo afectaba a esta función. Como estos fallos otros muchos empezaron a surgir del proyecto y frente a los acontecimientos, Gregory Maxwell expuso que era hora de desamparar OpenSSL y sus incesantes inconvenientes.

Esos pasos iniciales para migrar a otra implementación segura de criptografía fueron entonces apoyados por Pieter Wuille, quien en dos mil quince presentó el BIP-66 (BIP – Bitcoin Improvements Proposals) llamado “Strict DER Signatures”. Nacía de esta manera la implementación DER que tomaría la bridas del desarrollo en Bitcoin, y que dejaba a un lado a OpenSSL así como sus inconvenientes y también irrespeto de estándares de seguridad.

De esta forma, el nuevo estándar de firma rigurosa DER de Bitcoin aplicaría a los OP_CODES o bien códigos de operación, OP_CHECKSIG, OP_CHECKSIGVERIFY, OP_CHECKMULTISIG o bien OP_CHECKMULTISIGVERIFY, a la que se aplica la verificación ECDSA y por esta razón deben codificarse usando una firma rigurosa DER.

¿De qué forma marchan las firmas estrictas DER?

Básicamente lo que hace la codificación DER es; garantizar que las verificaciones ECDSA sean adecuadas en todo momento. Para conseguir esto, cada firma se comprueba no solo en capacitación sino más bien en la manera en de qué forma ha sido codificada.

En primer sitio, las firmas ECDSA pasan por una verificación DER, esta se ocupa de comprobar que la codificación de la firma sea adecuada. Cada firma ECDSA ha de ser esmeradamente codificada (o bien escrita) en Bitcoin, y cualquier modificación en este sentido señala que la firma no es fiable.

En ese caso, el protocolo Bitcoin sencillamente rechaza la firma y detiene la ejecución del Bitcoin Script asociado a dicha firma. No obstante, si la firma rigurosa DER es válida, mas la firma ECDSA no lo es, la ejecución del Bitcoin Script asociado acabará inutilizando la firma al final de su ejecución cuando esta no pase la verificación del script.

En cualquiera de los 2 casos ya antes descritos podemos tener la seguridad de que las firmas ECDSA van a hacer su trabajo: sostener seguro nuestros bitcoins y las operaciones que efectuamos con ellos. Y en un caso así muy puntual, las firmas estrictas DER nos asisten a tener una nueva medida de seguridad para sostener dicho funcionamiento ante cualquier situación.

La especificación o bien diseño empleado por Bitcoin para su implementación DER respeta los estándares de la Unión Internacional de Telecomunicaciones (ITU – International Telecommunication Union), específicamente el estándar X.690 – 2015, lo que deja en clara la alta calidad de la implementación.

Describiendo su funcionamiento

Como sabemos una firma digital en Bitcoin es parte integrante de los scriptSigs y scriptWitnesses de las transacciones. Dicha firma realmente consiste en una codificación DER de una firma ECDSA, a la que se le añade un byte de tipo sighash.

Para producir esta codificación se emplea el próximo procedimiento:

  1. Se produce el “Objeto compuesto” utilizando 1 byte de información y marcándolo con el código 0x30 . Este objeto compuesto es la tupla de los valores (R, S) de la firma ECDSA.
  2. Longitud de 1 byte del objeto compuesto.
  3. El valor R de la firma, consiste en:
    1. Un tipo “Entero” de 1 byte marcado con 0x02
    2. Longitud de 1 byte del entero
    3. bytes del valor R de longitud variable
  4. El valor S de la firma, que consiste en:
    1. Un tipo “Entero” de 1 byte marcado con 0x02
    2. Longitud de 1 byte del entero
    3. bytes de valor S de longitud variable
  5. El byte de tipo sighash

Como resultado de este esquema, las firmas DER son más cortas que sus contrapartes ECDSA, alcanzando un máximo de setenta y tres bytes (aprox setenta y tres caracteres). Esto es fundamental, puesto que las hace más fáciles de manejar, consumen menos ancho de banda al mandarse a la red reduciendo la sobrecarga de la red y aumentan la cantidad de transacciones que caben en un bloque, incrementando la escalabilidad de la red.

¿Cuánto sabes, criptonauta?

¿El empleo incorrecto de firmas DER puede llevar a un hard fork?

¿Por qué razón es esencial contar con una buena codificación DER?

En primer sitio debemos rememorar que ECDSA es un sistema de firma digital determinista, con lo que bajo cualquier criterio, este algoritmo debe devolvernos siempre y en toda circunstancia exactamente la misma firma, bajo la mismas condiciones de generación. Esto es esencial para la seguridad y nos asegura que 2 firmas ECDSA jamás van a ser iguales. Lo mismo se repite en el caso de la codificación DER; o sea, solo hay una sola secuencia de datos que codifica válidamente algunos valores dados para una firma ECDSA.

Sin embargo, existen algunas implementaciones con fallos (como la de OpenSSL) que generan codificaciones incorrectas en algunos casos. Por tanto, los verificadores de firma ECDSA de manera frecuente son un tanto clementes en lo que admiten. En Bitcoin, esto es inadmisible por el hecho de que acarrea a fallos de verificación de firmas y rompe el acuerdo de la red. Ante semejantes inconvenientes, los Bitcoin Developers decidieron crear su implementación DER ceñida a las necesidades concretas de Bitcoin eludiendo conque otras implementaciones puedan afectar su funcionamiento.

bitcoin
Bitcoin (BTC) $ 63,220.00
ethereum
Ethereum (ETH) $ 4,160.30
binance-coin
Binance Coin (BNB) $ 486.92
tether
Tether (USDT) $ 1.01
cardano
Cardano (ADA) $ 2.16
solana
Solana (SOL) $ 211.11
xrp
XRP (XRP) $ 1.10
polkadot
Polkadot (DOT) $ 44.05
dogecoin
Dogecoin (DOGE) $ 0.267944
usd-coin
USD Coin (USDC) $ 1.01