Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Cifrado ElGamal

Criptografía (CCLXXXVIII): Descifrado y verificación firma digital ElGamal en python

En un  post anterior  puse un script  en python para  implementar la firma digital y el cifrado  con el  esquema de firma digital   y el   esquema de cifrado   ElGamal, respectivamente , y en éste  incluyo otro  script en python para  implementar el descifrado y la verificación de la firma digital  con esos mismos esquemas, e s decir, para las operaciones  que se realizan en la comunicación en el lado del receptor. Antes  de ver el script, creo que conviene recordar cómo se realizan dichas operaciones , para lo que recomiendo leer  este post  en el que expliqué este asunto referido al caso de RSA , pero que es lo mismo para el caso de aplicar los esquemas de  firma digital   y de   cifrado   ElGamal. El script que pongo a continuación implementa las operaciones  de descifrado de la clave de sesión   mediante el esquema de cifrado ElGamal   y el descifrado del texto en ...

Criptografía (CCLXXXIX): Ataque a la firma digital ElGamal

  Tal y como decía  en este post : "El eslabón más débil de la cadena de seguridad (y la criptografía no es una excepción) lo constituimos las personas". Es decir,  podemos tener un algoritmo criptográfico muy robusto  (muy seguro conceptualmente), como es el caso del esquema de firma digital Elgamal ,  pero si las personas  que lo administramos y/o utilizamos  no hacemos un uso adecuado del mismo éste podría ser "roto" con relativa facilidad . Ejemplos de lo anterior, pero hay multitud de ellos, son la mala utilización de la máquina enigma durante la WWII o la elección no adecuada de los dos números primos factores del módulo en RSA  o, incluso algo bastante más reciente y que tiene mucho que ver con lo que voy a contar en esta entrada, cuando en 2010 un grupo de hackers conocido como  'fail0verflow' se hizo con la clave privada usada por Sony para firmar el software de la consola PlayStation 3 aprovechándose de la mala utilización por pa...

Criptografía (CCLXXXVII): Firma digital y cifrado ElGamal 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 la firma digital y el cifrado con el  esquema de firma digital   y el   esquema de cifrado ElGamal . Antes de poner el script, recordar que en  este post  referido a  RSA , decía que   l os esquemas modernos de cifrado utilizan conjuntamente los conceptos de   clave pública   y   clave privada , es decir, el mensaje o archivo completo se cifra con un algoritmo de  clave privada o simétrica  (por ejemplo,  AES ) y luego la clave empleada en ese cifrado (clave de sesión), a su vez, se cifra con un algoritmo de  clave pública o asimétrica  (por ejemplo,  RSA ): Por tanto, como se ve en la figura anterior, el texto en claro se cifra mediante una clave de sesión, un número correspondiente a cada mensaje particular, y la c...

Criptografía (CCLXXXV): Generación de claves ElGamal 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 la generación del par de claves de un usuario, pública y privada, en   ElGamal . Antes de poner el script, recordar que en  este post  expliqué cómo se generaban ambas claves en este  criptosistema ,  que debe su nombre al criptógrafo egipcio  Taher Elgamal  que lo describió en 1984 . Conforme a lo que indiqué en el citado post,  l a generación del par de claves para un usuario consiste en : 1.-  Se elige un número primo  'p'  muy grande y un  generador  'g'  o raíz primitiva módulo  'p' . Al igual que en el  intercambio de clave de Diffie-Hellman  y por el mismo motivo, se puede obviar que  'g'  sea un  generador  'g'  o raíz primitiva módulo  'p' , aunque es recomendable que sí lo sea. 2.-   Se...

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 ...