¿Qué es el algoritmo de firma ECDSA?

ECDSA son las iniciales  en inglés de Elliptic Curve Digital Signature Algorithm (Algoritmo de Firma Digital de Curva Elíptica). Este sistema, se emplea para crear una firma digital que deja la verificación por la parte de terceros sin comprometer la seguridad.

Principios básicos de ECDSA

El funcionamiento matemático y algorítmico de ECDSA es bastante complejo. Para iniciar, ECDSA fundamenta su funcionamiento basándonos en una ecuación matemática que dibuja una curva. El proceso, a rasgos generales, sería el siguiente:

El algoritmo ECDSA marcha a través de un mecanismo de criptografía llamado, criptografía asimétrica. Este sistema de firmado, produce 2 claves que reciben el nombre de clave privada y clave pública. Las dos claves están relacionadas por una compleja operación matemática efectuada sobre una función de curva elíptica.

Bajo este esquema de funcionamiento, ECDSA garantiza en primera instancia lo siguiente:

  1. Firmas únicas y también inigualables para cada conjunto de generación de claves privadas y públicas.
  2. La imposibilidad práctica de falsificar las firmas digitales. Esto es de este modo pues la potencia computacional precisa para esto, está fuera de los límites actuales.

Gracias a estas 2 peculiaridades, ECDSA se considera un estándar seguro para desplegar sistemas de firmas digitales. Su empleo en nuestros días es tan variado, que hay aplicación de exactamente las mismas en prácticamente todos los campos informáticos. Por poner un ejemplo, la infraestructura de certificados de seguridad SSL y TLS de Internet hace empleo  intensivo de ECDSA. El Bitcoin, predecesor de la tecnología blockchain, asimismo emplea ECDSA para lograr el elevado nivel de seguridad que lo caracteriza.

Sobre esa curva, se escoge un punto al azar y se estima que es su punto de origen.  

Seguidamente, se produce un número azaroso, es exactamente este número azaroso, el que vamos a conocer como la clave privada.

ecdsa grafico ejemplo

Luego, haciendo empleo la clave privada y el punto de origen, efectúas otra ecuación y conseguimos un segundo punto en la curva, esa es tu clave pública. Es exactamente, empleo de esa nueva ecuación al lado del punto de origen y la clave pública, la que deja establecer la relación entre la clave pública y la privada.

Este proceso es considerado seguro, pues por el momento solo puede hacerse en un sentido. Esto es, solo es posible establecer la relación matemática desde clave privada a pública, mas a la inversa no.

De esta forma, en el momento en que un usuario desee firmar un fichero, empleará su clave privada (el número azaroso) con un hash del fichero (un número único para representar el fichero) en una ecuación mágica y eso le va a dar su firma. Si alguien desea revisar la veracidad de la información, solo precisa la clave pública y con ella va a ser capaz de contrastar la autenticidad.

Así puesto que, las claves públicas pueden ser conocidas por todos, sin poner bajo riesgo la autenticidad de nuestra firma, puesto que la clave pública solo sirve para contrastar, no para firmar.

¿Por qué razón empleamos ECDSA?

La necesidad de crear un sistema de firmas como el de ECDSA nace de poder compartir datos de manera segura. En un planeta conectado por redes, se hace preciso un esquema en el que podamos compartir información y validarla. Todo ello sin precisar descubrir secretos. Veámoslo con el próximo ejemplo:

Una compañía ha efectuado un informe económico sobre sus actividades. Este informe es entregado a determinados inversores con limitado nivel de acceso a información. Estos inversores desean contrastar la autenticidad del informe y los datos ofrecidos.

En este punto nos preguntamos: ¿El administrador le va a dar la contraseña total a los datos de la compañía?. O bien al contrario, ¿No le va a dar acceso a la información a los inversores a fin de que puedan contrastarla?

Ambas situaciones no son buenas y el empleo de ECDSA puede solventarla merced a un tercer enfoque:

El administrador usa un sistema de firmas asimétricas ECDSA. Con esto, el administrador firma el informe con su clave privada, y da la clave pública a los inversores. Justo después, los inversores pueden contrastar utilizando la clave pública, la autenticidad de la información ofrecida. Esto sin la necesidad de tener acceso irrestricto a los datos.

Clave privada, pública y firmas

El esquema de funcionamiento de ECDSA se fundamenta en los próximos 3 pilares:

  1. La clave privada, que realmente es un número secreto conocido solo por la persona que lo produjo. Una clave privada es fundamentalmente un número generado de manera aleatoria. En Bitcoin, alguien con la clave privada que corresponde a los fondos en la blockchain es el único que puede gastar esos fondos.
  2. La clave pública, el que es un número generado desde una relación matemática  utilizando la clave privada. Solo se puede conseguir conociendo la clave privada de antemano, y no del revés. Esta clave se produce con la intención de compartirse en público a fin de que otros puedan determinar si una firma es auténtica.

La firma, es un número que prueba que se efectuó una operación de firma. Una firma se produce matemáticamente desde un hash de algo que se firmará, más una clave privada. La firma en sí es 2 números conocidos como “r” y “s“. Con la clave pública, se puede emplear un algoritmo matemático en la firma. La finalidad de esto es determinar que se generó originalmente desde el hash y la clave privada. Un sistema que marcha de manera perfecta, sin precisar conocer la clave privada.

ECDSA y la tecnología blockchain

Uno de los primordiales inconvenientes a los que se encaró Satoshi Nakamoto con el Bitcoin, fue la distribución de las claves públicas. La visión de Nakamoto era la de permitir compartir claves públicas de poca extensión, seguras, con bajo costo computacional y fáciles de emplear.

Estas peculiaridades serían alcanzables merced a la criptografía de curva elíptica. En consecuencia, está es la razón por la cual Nakamoto decidió utilizar ECDSA para su sistema. Y con esto, se aseguraba que:

  1. Fuese un sistema segurísimo. Satoshi decidió emplear el estándar de curva elíptica secp256k1 para el Bitcoin. Esta curva elíptica tiene una seguridad realmente bien probada, con lo que resultó idónea para aplicarla.
  2. El costo computacional de producir claves y validar firmas es bajísimo.
  3. Permite la generación de claves públicas infinitas.

Sin embargo, las claves ECDSA de doscientos cincuenta y seis bits son muy extensas. Teniendo presente en eso, Nakamoto decidió refactorizar las claves públicas para hacerlas más cortas. Fue conque utilizando codificación Base58 y funciones hash como SHA-256 y RIPEMD-160, redujo el tamaño de las claves públicas y creó las direcciones Bitcoin.

Por ejemplo esta dirección: 1PfS6w6MonCT976xe2jD9tqwo8QkDnonRW.

Todo ello resultó, es un sistema computacional que dejaba a sus usuarios mandar y percibir bitcoin seguramente.

¿Cuánto sabes, criptonauta?

¿ECDSA es una modificación eficaz del algoritmo de firma electrónica DSA?

Jugando con ECDSA

En Internet hay muchos espacios donde podemos jugar y conocer un tanto más sobre de qué manera marcha ECDSA. Uno de esos sitios es el Github de Kenji Urushima.

Urushima es un trabajador de Fuji Xerox en el país nipón. En su página web tiene una herramienta interactiva que ayuda a comprender como marcha ECDSA. En este lugar, vamos a poder crear las claves privadas y públicas y firmas mensajes adaptados. Probar un tanto puede ser clave para entender algo más de qué forma marcha este sistema de firmado digital.

bitcoin
Bitcoin (BTC) $ 65,307.00
ethereum
Ethereum (ETH) $ 4,199.65
binance-coin
Binance Coin (BNB) $ 499.44
cardano
Cardano (ADA) $ 2.23
tether
Tether (USDT) $ 1.01
solana
Solana (SOL) $ 184.34
xrp
XRP (XRP) $ 1.15
polkadot
Polkadot (DOT) $ 44.14
dogecoin
Dogecoin (DOGE) $ 0.253453
usd-coin
USD Coin (USDC) $ 1.00