¿Que son las Claves Publicas y Privadas en Blockchain?

 

El inverso multiplicativo y las claves pública y privada

En matemáticas, un inverso multiplicativo o recíproco para un número X es:

1/ X

Así el inverso de 5 es 1/5, de tal forma que (5) (1/5) = 1

En el artículo 5 de esta serie de criptografía, aprendimos con la matemática modular a enviar un mensaje cifrado con dos funciones exponenciales en formato modular:

función para cifrar:                      C = me module n

función para descifrar:              m = Cd modulo n, donde:

                        e= es la clave publica

                        d= es la clave privada

Además “e” y “d” cumplen con la condición de ser inversos multiplicativos en el módulo “n”.

(e) (d)mod n = 1

Ejemplo:  Si e= 17 y d son inversos multiplicativos en el módulo n= 589.

Para encontrar el valor de “d”:

  • Buscar dos números primos que multiplicados den 589.

  • Estos son p=19 y q=31 porque (19)(31) = 589.

  • El teorema de Euler dice que en el valor de la función φ(n)= (p-1) (q-1) puedo encontrar dos números que son inversos multiplicativos.

  • Así (19-1) (31-1) = 540

  • Utilizar un sitio online poner e=17 y n=540

Hemos encontrado la clave privada d= 413 que corresponde a la clave publica e= 17, porque:

  • Conocemos el valor del módulo n = 589.

  • Encontramos con fácilmente los números inversos multiplicativos “e” y “d” en el módulo φ(n) = 540.

En la practica la criptografía de Bitcoin, utiliza las matemáticas en el módulo “n”:

115792089237316195423570985008687907853269984665640564039457584007908834671663

Ejemplos de claves privadas Bitcoin:

Con la programación Bitcoin en lenguaje Python seleccionar números al azar dentro de este módulo, aquí ilustramos tres claves privadas s1, s2 y s3:

Ejemplos de claves publicas:

Multiplicar estos números por el punto generador de la curva elíptica G y se obtienen las claves publicas s1G, s2G y s3G. Estas claves están en formato no comprimido:

 

Plataformas online para obtener claves

Existen sitios online que te permiten generar claves, dar clic en start: 
Generador de claves

Estas claves están en formato comprimido:

Bitcoin Address:

1PGBivpWXTUvEdXZ6FGzXzrSGvc11zpWs8

Private key:

L2SpQKmESVNmcZB3aKyhVRmQNM5uRgd64LERi8sEjTgjiM1Wno3L

 

Aplicación de las claves en programación Bitcoin

Paso 1: disponer de una clave pública (Address) y su correspondiente privada:

Private key:    L1d2uVdAobUjTBU84qB8KWUR13W2wvnDGQcHLpCk85RiUW5gU55u

Address:

36e4yeKShaHEwLQYDDbNE9U4fWR1PEVtAX

Paso 2: Roberto desea enviar un mensaje a Alice y que Alice pueda verificar que es de Roberto:

Paso 3: Mensaje o texto plano:

New York is the most populous city in the United States. With a 2020 population of 8,804,190 spread over 300.46 square miles, New York City is also the most densely populated major city in the United States.

Paso 4: Utilizar un programa en lenguaje JavaScript del protocolo Bitcoin, para firmar el mensaje (cifrar o encriptar):

  • En la línea 3 en la variable plaintex colocar el mensaje.

  • En la línea 4 está la clave privada.

  • En la línea 7 firmar el mensaje.

Paso 5: Al correr el programa en la terminal Git Bash de Microsoft, obtengo el texto cifrado:

Messaje Ciphertex =H1E8apbIZ4plJ8Hx44t+TahH2skW9EV142PXYUKLHdSVJ47bQ0+g6OJlt3KXA89hNHY0QmUQkYXoH/pYfZAhZv8=

Paso 6: Alice recibe por correo electrónico:

  • El mensaje (texto plano)

  • El texto cifrado.

  • Además, conoce la clave publica o dirección de Roberto.

Ejecuta el programa de verificación de firma digital en JavaScript del protocolo Bitcoin:

Y al correr el programa en su terminal git bash, Alice obtiene como respuesta “true”.

 

Conclusión:

La criptografía de claves pública y privada permite firmar mensajes y verificar que corresponde a la persona que lo envio, este proceso llamado autenticación evita que un atacante envíe mensajes maliciosos dentro de una red de un sistema informático.

 
Carlos Sampson