Ir al contenido principal

Entradas

Mostrando entradas de julio, 2023

Criptografía (CCLXXXIV): el algoritmo ElGamal

El algoritmo ElGamal , un algoritmo de cifrado asimétrico  que debe su nombre al criptógrafo egipcio  Taher Elgamal que lo describió en 1984, se basa en el mismo principio que en el que se fundamenta el intercambio de clave de Diffie-Hellman  (ver este post donde explico este protocolo criptográfico ). Como en todo criptosistema de clave pública un usuario dispone de dos claves :  una pública , que debe estar en posesión de cualquier persona que pretenda enviarle un mensaje cifrado,  y otra privada , que el usuario utilizará para descifrar los mensajes que le envíen y que sólo él posee. Es decir,  el emisor cifrará el mensaje con la clave pública del receptor y sólo éste podrá descifrarlo utilizando su clave privada . Pues bien, estableciendo una analogía entre este algoritmo de cifrado y el citado protocolo de intercambio de clave con dos intervinientes en la comunicación, que comparten una clave de sesión ( 'k' ), el secreto compartido, que viene dada por:  k = g ab  mod p

Criptografía (CCLXXXIII): Ataque de intermediario al Intercambio de clave de Diffie-Hellman en python

Continúo poniendo scripts de programación en python para automatizar tareas que tengan relación con la  criptografía . Ya puse una  entrada  en la que expliqué el funcionamiento del protocolo criptográfico para el intercambio de clave de Diffie-Hellman , que se utiliza en canales de comunicación inseguros, como puede ser Internet,  para salvaguardar el secreto de la clave si las comunicaciones entre las partes son interceptadas por un tercero. Asimismo, en esta entrada expliqué en que consiste  el ataque de intermediario   (MitM, por las siglas en inglés de ' Man in the Middle ')  aplicado a este protocolo cuando se realiza sin autenticación, y   en esta entrada incluyo un script en python para implementar este ataque . El script simula el intercambio de clave , por ejemplo: una clave de sesión para ser utilizada en el cifrado y descifrado de mensajes mediante  AES , entre A y B,  de la misma manera  que el que puse en este post , pero añade la participación de un atacante (C

Criptografía (CCLXXXII): Ataque de intermediario al Intercambio de clave de Diffie-Hellman

Ya expliqué en este post en que consistía el ataque de intermediario   (MitM, por las siglas en inglés de ' Man in the Middle ')  aplicado al criptosistema RSA , y en esta entrada aplico este mismo ataque al   intercambio de clave de Diffie-Hellman , que como decía en este otro post   es un protocolo que  se utiliza para el intercambio seguro de una clave entre dos  interlocutores a través de un canal inseguro , como puede ser Internet. Como también decía en el  último de los citados posts , este protocolo de intercam bio de clave es vulnerable a este tipo de ataques  cuando se realiza de forma no autenticada ,  y que consiste en que un atacante se interponga en las comunicaciones entre A y B, suplantando a uno frente al otro y haciendo que ninguno de los dos se dé cuenta de que están siendo hackeados. Pero veamos cómo : Si un atacante (C) se interpone en las comunicaciones entre A y B, suplantando a uno frente al otro: 1.- C se hará con el valor de  g a  mod p  que A ha calcu

Criptografía (CCLXXXI): Intercambio de clave de Diffie-Hellman 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 para  implementar  el intercambio de clave de Diffie-Hellman . Antes de poner el script, recordar que en  este post  decía que este  protocolo criptográfico   se utiliza para el intercambio seguro de una clave entre dos  interlocutores a través de un canal inseguro , como puede ser Internet,  sin poner en peligro el secreto de ésta si las comunicaciones entre ambos son interceptadas por un tercero . El script simula el intercambio de clave , por ejemplo: una clave de sesión para ser utilizada en el cifrado y descifrado de mensajes mediante AES , entre Alicia (A) y Bernardo (B),  de la siguiente manera : 1.- A genera un número primo aleatorio 'p' de 2.048 bits y se lo envía a B junto con el número 5, que le propone utilizar como número  'g'  para este intercambio de clave. 2.-  A introduce una frase de contraseñ

Criptografía (CCLXXX): Intercambio de clave de Diffie-Hellman

Entre las entradas que pongo en este blog para contar de la forma más comprensible de la que sea capaz lo que voy aprendiendo sobre criptología , le toca el turno al protocolo criptográfico para el intercambio de clave propuesto por   Whitfield Diffie y  Martin Hellman   en 1976. El intercambio de clave de Diffie-Hellman   es un protocolo que se utiliza para el intercambio seguro de una clave entre dos interlocutores a través de un canal inseguro , como puede ser Internet. Sean A (Alicia) y B (Bernardo) los dos interlocutores que desean intercambiar una clave de sesión , un número que se utiliza como clave para cifrar y descifrar utilizando un criptosistema de clave simétrica o secreta  y que ambos interlocutores deben conocer (compartir), sin poner en peligro el secreto de ésta si las comunicaciones entre ambos son interceptadas por un tercero . A y B actuarían de la siguiente manera : 1.- Se ponen de acuerdo para escoger un número primo 'p' y un generador 'g' o r

Criptografía (CCLXXIX): Descifrado RSA y verificación firma digital en python

En el post anterior puse un script  en python para  implementar la firma digital y el cifrado con el algoritmo   RSA , y en éste  incluyo otro  script en python para  implementar el descifrado con el mismo algoritmo y la verificación de la firma digital , e s decir, para las operaciones  que se realizan en la comunicación en el lado del receptor. Como se ve en la figura anterior, la clave de sesión (la clave con la que se ha cifrado el texto en claro), se descifra utilizando la clave privada del receptor  ( criptografía asimétrica ) , que es el único que la posee y, por tanto, el único que puede descifrarla, y  posteriormente se descifra el criptograma o texto en claro cifrado mediante la clave de sesión ( criptografía simétrica ). Tal y como indique en el citado post , este esquema de cifrado, además de para mantener el secreto de la comunicación ( confidencialidad ), sirve  para garantizar al receptor que el emisor  es realmente quien ha enviado el texto en claro ( autenticidad : el