elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Criptografía (Moderador: kub0x)
| | | |-+  Sigamos con la historia: Cifrado Vigènere
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Sigamos con la historia: Cifrado Vigènere  (Leído 17,476 veces)
Aberroncho
Colaborador
***
Desconectado Desconectado

Mensajes: 1.738


Daría todo lo que sé por la mitad de lo que ignoro


Ver Perfil
Sigamos con la historia: Cifrado Vigènere
« en: 24 Diciembre 2005, 12:16 pm »

Allá por el siglo XVI un matemático francés llamado Vigènere desarrolló un nuevo método de cifrado que desde entonces recibe su nombre. La particularidad de su método es que un caracter en el texto claro tiene varias formas diferentes de representarse en el texto cifrado (polialfabético) gracias a lo cual queda a salvo de ataques por frecuencia de aparación de caracteres (ver cifra César en http //foro.elhacker.net/index.php/topic,100183.0.html)

El método de Vigènere utiliza una clave y una matriz cuadrada (mismo número de filas que de columnas) para realizar el cifrado y el descifrado. Ambas deben ser conocidas por el emisor y el receptor.

La matriz de Vigènere tendrá tantas filas y columnas como caracteres diferentes tenga nuestro código de caracteres. Las filas contienen el alfabeto desplazado, cada con un desplazamiento respecto a la anterior. Tomemos para nuestros ejemplos la siguiente matriz de Vigènere

 |A|B|C|D|E|F|G|H|I|J|K|L|M|N|Ñ|O|P|Q|R|S|T|U|V|W|X|Y|Z
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
A|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
B|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
C|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
D|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
E|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
F|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
G|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
H|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
I|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
J|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
K|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
L|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
M|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
N|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
O|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
P|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Q|r|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
R|s|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
S|t|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
T|u|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
U|v|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
V|w|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
W|x|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
X|y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Y|z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z


En cuanto a la clave, esta será una palabra o conjunto de caracteres tan larga como deseemos. Observar que si elegimos como clave un único caracter estaríamos haciendo un cifrado César.

Para cifrar el texto dividimos el mensaje en grupos de letras tan largos como la clave y los emparejamos con ella. Supongamos que elegimos como clave "DE" y que el mensaje a cifrar es "Tres tristes tigres", tras este primer paso tendríamos:

TR ES TR IS TE ST IG RE S
DE DE DE DE DE DE DE DE D


Ahora vamos letra por letra buscando donde se cruza la columna que se corresponde a la letra del texto claro con la fila que se corresponde a la letra de la clave, y la letra que se encuentre en esa posición será con la que hagamos la sustitución. Según esto, nuestro mensaje quedará cifrado de la siguiente forma:


 |A|B|C|D|E|F|G|H|I|J|K|L|M|N|Ñ|O|P|Q|R|S|T|U|V|W|X|Y|Z
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
...
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
D|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
E|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z|a|b|c|d|e
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
...

TR ES TR IS TE ST IG RE S
DE DE DE DE DE DE DE DE D
-------------------------
XW IX XW MX XJ WY ML VJ W


Para descifrarlo conociendo la clave y la matriz solo hay que dividir el mensaje cifrado en grupos del tamaño de la clave y hacer el proceso inverso: Buscar en la fila correspondiente a la letra de la clave cual es la columna en la que se encuentra la letra del texto cifrado.

Este método de cifrado fue considerado inviolable hasta que Friedrich Kasiski, en el siglo XIX, hizo público un ingenioso método de criptoanálisis.

Kasiski propuso que en un mensaje cifrado con Vigènere grupos de letas similares en distinta posición del texto se corresponden con la misma palabra cifrada con la misma porción de clave. En nuestro ejemplo podemos observar como el par "XW" se repite en dos ocasiones y en ambas representa en el texto claro al par "TR".

Dado que la distancia que hay entre grupos de letras similares tiene que ser múltiplo de la longitud de la clave, podemos suponer que la longitud de la clave será igual al máximo común divisor de todas las distancias.

Se divide el mensaje cifrado en grupos de letras del tamaño de la clave que hemos calculado. Las letras de cada grupo que ocupan la misma posición dentro de su grupo han sido cifradas con el mismo alfabeto de sustitución (en nuestro ejemplo las primeras letras de cada grupo han sido cifradas con el alfabeto "D" y las segundas con el alfabeto "E") así que ya podemos lanzar una análisis de frecuencia de caracteres similar al que empleabamos para romper la cifra Cesar.


En línea

"La ignorancia es la noche de la mente, pero una noche sin Luna ni estrellas."
(Confucio)
Aberroncho
Colaborador
***
Desconectado Desconectado

Mensajes: 1.738


Daría todo lo que sé por la mitad de lo que ignoro


Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #1 en: 8 Febrero 2006, 17:55 pm »

En el anexo os dejo un sencillo fuente de C de un programilla que realiza un cifrado Vigènere sobre archivos. Para que sea capaz de cifrar cualquier tipo de archivo y no solo archivos de texto, he cogido como alfabeto base todos los valores de un byte (0-255) y he tratado todos los ficheros como binarios.

Tres cosas a tener en cuenta:
  • Esto es solo es para ilustrar como funciona el algoritmo. Si necesitáis seguridad utilizar otra cosa porque la mayoría de archivos binarios tienen largas secuencias de 0 y sería muy fácil romper la cifra
  • He probado que funciona, pero es evidente que mis pruebas son limitadas. No borréis los ficheros originales no vaya a ser que no podáis descifrar después ;)
  • He procurado no salirme del estándar ANSI para que no haya problemas de compatibilidad pero en cualquier caso, está compilado con Dev-C

El modo de empleo es:

vigenere {Fichero de entrada} {Fichero de salida} {Clave} {Operación}

donde operación será C para codificar y D para decodificar.



En línea

"La ignorancia es la noche de la mente, pero una noche sin Luna ni estrellas."
(Confucio)
~Yey~

Desconectado Desconectado

Mensajes: 135



Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #2 en: 7 Enero 2008, 17:33 pm »

muchas gracias
 puede llegar a ser muy útil
En línea



 
                                     Blog
H1@

Desconectado Desconectado

Mensajes: 278



Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #3 en: 14 Julio 2008, 06:36 am »

Estas lecciones de historia de criptografía a mi me resultan muy interesantes

La verdad que los métodos que ideaban son ingeniosos e imaginativos...

Mola ;D
En línea

#include <iostream>

using namespace std;

void cerebroDeBush()
  {
    char cerebro[3];
    cout << "¿Cuantas neuronas tiene Bush?\n";
    cin.get(cerebro,2);
    cout<<"Numero de neuronas: "<<cerebro<<endl;
   }

int main()
     {
       cerebroDeBush();
        return 0;
     }
tonirilix

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #4 en: 30 Junio 2010, 15:55 pm »

oye que interesante metodo.
realmente unos genios estos tipos...
ahora. que tan facil sería para un usuario
mas o menos avanzado descifrar esto?

y ps... muchas gracias  ;D
« Última modificación: 30 Junio 2010, 16:06 pm por tonirilix » En línea

Aberroncho
Colaborador
***
Desconectado Desconectado

Mensajes: 1.738


Daría todo lo que sé por la mitad de lo que ignoro


Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #5 en: 30 Junio 2010, 23:20 pm »

Con un lápiz y un papel tiene que ser una tarea de chinos. Con un ordenador es mucho más sencillo. Pero en cualquier caso no es un método seguro. Actualmente hay métodos mucho más robustos.

También depende de la longitud de la clave y la longitud del texto cifrado. Con textos muy largos es más fácil descifrarlo. Recuerda que en última instancia se descifra mediante un análisis de frecuencia, así que cuanto más texto cifrado tengas más próxima estará la frecuencia de letras cifradas a la frecuencia de letras del idioma original.
En línea

"La ignorancia es la noche de la mente, pero una noche sin Luna ni estrellas."
(Confucio)
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #6 en: 1 Julio 2010, 18:20 pm »

Mmh, si no me equivoco, no se puede hacer un análisis de frecuencias con el cifrado vigènere, ya que este no es de sustitución simple.
Un abrazo
APOKLIPTICO
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Aberroncho
Colaborador
***
Desconectado Desconectado

Mensajes: 1.738


Daría todo lo que sé por la mitad de lo que ignoro


Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #7 en: 15 Julio 2010, 23:33 pm »

Sí que se puede pero no es tan sencillo como en una cifra Cesar:

Citar
Este método de cifrado fue considerado inviolable hasta que Friedrich Kasiski, en el siglo XIX, hizo público un ingenioso método de criptoanálisis.

Kasiski propuso que en un mensaje cifrado con Vigènere grupos de letas similares en distinta posición del texto se corresponden con la misma palabra cifrada con la misma porción de clave. En nuestro ejemplo podemos observar como el par "XW" se repite en dos ocasiones y en ambas representa en el texto claro al par "TR".

Dado que la distancia que hay entre grupos de letras similares tiene que ser múltiplo de la longitud de la clave, podemos suponer que la longitud de la clave será igual al máximo común divisor de todas las distancias.

Se divide el mensaje cifrado en grupos de letras del tamaño de la clave que hemos calculado. Las letras de cada grupo que ocupan la misma posición dentro de su grupo han sido cifradas con el mismo alfabeto de sustitución (en nuestro ejemplo las primeras letras de cada grupo han sido cifradas con el alfabeto "D" y las segundas con el alfabeto "E") así que ya podemos lanzar una análisis de frecuencia de caracteres similar al que empleabamos para romper la cifra Cesar.



En línea

"La ignorancia es la noche de la mente, pero una noche sin Luna ni estrellas."
(Confucio)
Dickey

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #8 en: 24 Septiembre 2010, 19:03 pm »

No he entendido varias cosas, y he leido el articulo de la wikipedia y unas cuantas cosas más.

Una que no me a quedado clara es si solo tenemos el codigo ya cifrado por donde empezamos? porque no tenemos la clave..

XW IX XW MX XJ WY ML VJ W
Como empezariamos a descifrar este codigo? alguien puede hacerlo para que todos los que tenemos dudas lo veamos? sin saber que su clave es "DE" y/o otras informaciones adicionales.

Y otra pregunta es que no todos los cifrados vigenere tienen que ir cifrados por una clave exacta de X numeros, por ejemplo ir de dos en dos como el anterior ejemplo.
Esto lo digo por el siguiente codigo:
- guvq gu d sdvr    
Esto no es un cifrado vigenere? no sigue las pautas anteriormente marcadas, no?
A mí me han dicho que ese cifrado es vigenere. (He extraido una pequeña parte de una prueba de warzone, tan solo con el fin de poner un ejemplo y entender las cosas. Ningún interés en que me descifren la prueba, ni nada por el estilo).

Gracias a todos.
Saludos.

« Última modificación: 24 Septiembre 2010, 19:05 pm por Dickey » En línea

APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Sigamos con la historia: Cifrado Vigènere
« Respuesta #9 en: 29 Septiembre 2010, 06:01 am »

Cryptool tiene una herramienta de visualización del algoritmo vigènere, fijate en "Indiv. Procedures" --> "Visualization of algorithms" --> Vigènere.
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con vigenére
Criptografía
Sk9ITk5Z 2 4,485 Último mensaje 13 Agosto 2011, 16:27 pm
por Sk9ITk5Z
[Perl] Ejemplo de Cifrado Vigenere
Scripting
BigBear 0 2,251 Último mensaje 13 Diciembre 2014, 15:23 pm
por BigBear
Ayuda !! Cifrado vigenere
Programación C/C++
Alejan_dro 1 1,768 Último mensaje 26 Marzo 2019, 10:04 am
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines