Ir al contenido principal

Entradas

Mostrando entradas de agosto, 2023

Criptografía (CCXCIV): Intercambio de clave de Diffie-Hellman en curvas elípticas (ECDH)

Ya expliqué en este post en qué consiste el protocolo de intercambio de clave de Diffie-Hellman y cómo se lleva a efecto entre dos usuarios. Además, también decía que  este protocolo criptográfico   se utiliza generalmente para el intercambio seguro de una clave, que será empleada en una sesión para el cifrado y descifrado utilizando un criptosistema de clave simétrica o secreta , entre dos  interlocutores a través de un canal inseguro , c omo puede ser Internet, y, por tanto, su objetivo  es salvaguardar  el secreto de la clave de sesión si las comunicaciones entre ambos son interceptadas por un tercero . Pues bien, en esta entrada voy a explicar cómo se lleva a cabo  el protocolo de Diffie-Hellmann en Curvas Elíptic as ( ' Elliptic curve Diffie–Hellman' o   'ECDH' por sus siglas en inglés) . Sean A (Alicia) y B (Bernardo) los dos interlocutores que desean intercambiar una clave de sesión . A y B  actuarían de la siguiente manera: 1.-  Se ponen de acuerdo para es

Criptografía (CCXCIII): Multiplicación escalar en una curva elíptica sobre un cuerpo finito ℤp en python

Continúo poniendo scripts de programación en python para automatizar tareas que tengan relación con la  criptografía . En el post anterior puse un script en python para implementar  la suma de dos puntos de una   curva elíptica   definida sobre un   cuerpo finito   ℤ p , y en éste  incluyo uno  que implementa la multiplicación escalar de un punto de una   curva elíptica   definida sobre el mismo tipo de cuerpo ; la operación que constituye la base de la Criptografía de Curva Elíptica (ECC) . E l   pseudocódigo  para implementar la multiplicación escalar es: -  Script python para implementar la multiplicación escalar de un punto de una curva elíptica definida sobre un cuerpo finito  ℤ p : El  script  es el siguiente: #!/usr/bin/env python # -*- coding: utf-8 -*- # MULTIPLICACIÓN DE UN PUNTO DE UNA CURVA ELÍPTICA (CE) POR UN ESCALAR: # # http://mikelgarcialarragan.blogspot.com/ import sympy def suma_puntos(p,a,x1,y1,x2,y2): if x1 == -1 and y1 == -1: x3, y3 = x2, y2

Criptografía (CCXCII): Suma de puntos de una curva elíptica sobre un cuerpo finito ℤp en python

Continúo poniendo scripts de programación en python para automatizar tareas que tengan relación con la  criptografía . En este post incluyo un  script en python que implementa la suma de dos puntos de una curva elíptica definida sobre un cuerpo finito   ℤ p . Ya expliqué en   este post  como se podía obtener el punto resultado de sumar dos puntos de una  curva elíptica  definida sobre los números reales mediante el llamado método de la cuerda y la tangente, y en esta entrada indico el algoritmo para hacerlo con las fórmulas matemáticas oportunas en una  curva elíptica  definida sobre un  cuerpo finito   ℤ p . E l   pseudocódigo  para implementar dicha suma es: -  Script python para implementar la suma de dos puntos de una curva elíptica definida sobre un cuerpo finito  ℤ p : El  script  es el siguiente: #!/usr/bin/env python # -*- coding: utf-8 -*- # SUMA DE DOS PUNTOS DE UNA CURVA ELÍPTICA (CE): # # http://mikelgarcialarragan.blogspot.com/ import sympy def suma_puntos(p,a,x1,y1,

Criptografía (CCXCI): Curva elíptica sobre cuerpo finito ℤp en python

Otro post con un script de programación en python para automatizar tareas que tengan relación con la  criptografía . En este post incluyo un  script en python para  obtener los puntos de una  curva elíptica  definida sobre un  cuerpo finito  del tipo  ℤ p y para obtener la representación gráfica de ambas curvas,  la definida sobre los número reales y la definida sobre el cuero finito  ℤ p . En el post anterior puse como ejemplo de lo anterior la curva sobre números reales que sirve para ilustrar este post: Y decía que  al definir la  curva elíptica   sobre un   cuerpo finito   se obtiene algo  que  se asemeja poco o nada a la representación gráfica de la curva sobre números reales, más bien  tiene el aspecto de un conjunto de puntos aleatorios , pero que todavía se puede observar la simetría . El  script  es el siguiente: -  Script python para la obtención y representación de los puntos de una curva elíptica sobre un cuerpo finito  ℤ p : #!/usr/bin/env python # -*- coding: utf-8 -*-

Criptografía (CCXC): Criptografía de curva elíptica (ECC)

Tal y como nos cuenta wikipedia, la Criptografía de Curva Elíptica (ECC, por las siglas e n inglés de ' Elliptic curve cryptography ') es una v ariante  de la  criptografía asimétrica o de clave pública basada en las  matemáticas  de las  curvas elípticas  y se emplea para implementar algunos de los criptosistemas de este tipo ya existentes. Antes que nada, decir que sigo empeñado en compartir lo que voy aprendiendo sobre criptología de la forma más comprensible que pueda y esperando no equivocarme demasiado al contarlo, pero en este caso no sé si voy a ser capaz; la criptografía moderna tiene una profunda base matemática que supera con creces mi capacidad y talento (tal y como suelo decir, poco en ambos casos). Por tanto, fruto de ese empeño y de mi propia incapacidad, voy a evitar entrar en mayores profundidades matemáticas y a centrarme en lo que he entendido sobre el uso de estas curvas en la   criptografía , pero en este caso es inevitable un breve barniz matemático a