Taller: Criptografía asimétrica.

Iniciado por APOKLIPTICO, 7 Octubre 2010, 22:58 PM

0 Miembros y 1 Visitante están viendo este tema.

WestOn

#40
Buenas, sabía que habría una gran diferencia pero, guau, es más de la que pensaba  :o
Pero es lo suyo, para esto, generar claves, etc, es mejor C/C++ o python.

Por cierto cuando pones:
Cita de: APOKLIPTICOSe elige "k"  tal que 2 <= k <= (p -2)
¿Cómo se expresaría 'tal que'? ¿Cómo un ''=="?

Saludos ;)

PD: Esta muy bien lo de Diffie-Hellman, gracias.
En mi cabeza existe una barrera espacio-tiempo de 4cm³. ¿Alguien sabe como eliminarla?.
                                                                                                                                                                                                                            

braulio--

Respecto a lo del lenguaje, creo que es más importante el algoritmo que el lenguaje en el que lo vayamos a hacer. Lo que tenemos que hacer entre todos es el algoritmo y no el código.

"Tal que" no estoy seguro de como se expresaría, pero con un "==" estoy seguro de que no.

APOKLIPTICO

"tal que" significa "que cumpla los siguientes requerimientos.
En ese caso, significa que "k" cumpla los requerimientos de estar entre 2 y (p - 2).

En cuanto lo que dice braulio, eso es real, el algoritmo es lo más importante de todo, sin embargo, hay mucha gente que quizas no entiende un algoritmo si se lo expresa utilizando matemáticas y álgebra, pero si lo entiende si se lo muestra como un código...
Esos códigos, era simplemente para remarcar la diferencia entre lenguajes, VB es un excelente lenguaje en cuanto a la facilidad de armar interfaces gráficas o GUI, es por eso que yo recomiendo hacer programas híbridos, la parte que requiere mucha capacidad de cómputo, en C++, la interfaz gráfica, en VB.
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.

raul338

APOKLIPTICO ... tu codigo en vb me demora solamente 24 segundos :P

long C++ != long vb

int C++ == long vb
long C++ == Currency vb


Son los cambios de variables, y como dije no desviemos mas del tema y cada uno se encaragará de usar el lenguaje que quiera a la hora de hacer el algoritmo

APOKLIPTICO

Como quieras, raul338, como andan esas lecturas?
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.

raul338

Wow.... solo me falta leer el de Diffie-Hellman y "procesar" el funcionamiento de ElGamal ya que ... a simple vista ya es algo complejo como para entender a la primera :xD

criskapunk

#46
Buenas chicos, tengo unas preguntas sobre el primer capítulo (Perdón por la tardanza, comencé tarde a leerlo):


  • ¿Por qué los cifrados simétricos son mas seguros que los asimétricos con claves mas pequeñas?
  • Si cifro un mensaje utilizando mi clave privada, ¿es posible que alguien teniendo el texto cifrado y la clave pública, obtenga mi clave privada?

Un saludo y muchas gracias APOKLIPTICO por el taller, me fascina la criptografía ;D

braulio--

Cita de: criska en 12 Octubre 2010, 16:51 PM
Buenas chicos, tengo unas preguntas sobre el primer capítulo (Perdón por la tardanza, comencé tarde a leerlo):


  • ¿Por qué los cifrados simétricos son mas seguros que los asimétricos con claves mas pequeñas?
  • Si cifro un mensaje utilizando mi clave privada, ¿es posible que alguien teniendo el texto cifrado y la clave pública, obtenga mi clave privada?

Un saludo y muchas gracias APOKLIPTICO por el taller, me fascina la criptografía ;D
a) Porque la seguridad en los algoritmos asimétricos se basa entre o otras cosas en la dificultad de factorizar enteros. Es bastante sencillo factorizar un número de 20 dígitos, no así con uno de 300.

b) Teoricamente es posible, pero usando números tan grandes el tiempo que se tardaría en conseguirlo supera los miles de años. (cifra inventada, pero me suena)

APOKLIPTICO

1) Los cifrados asimétricos, se basan en funciones trampa y en el uso de números primos, estos números, deben de ser muy grandes para evitar que puedan ser sacados fácilmente. Los cifrados simétricos, usan cualquier número como clave, lo cual aumenta mucho el espectro de claves posibles, haciendo más dificil quebrarlo utilizando fuerza bruta.
Pongamos como ejemplo en RSA, el módulo "n". Este es la multiplicación de dos números primos, para averiguar estos primos, se debería factorizar "n", obteniendo los primos iniciales. Si por ejemplo, quisiésemos con fuerza bruta sacar una clave de un RC4, deberíamos probar sucesivamente todas las claves.

2) Eso es lo que se llama un "known plaintext" attack. Los algoritmos asimétricos, no suelen ser vulnerables a estos ataques. Pongamos un ejemplo con RSA también:
Yo tengo la clave pública, osea el exponente público (e) y el módulo (n), el plaintext (m) y obviamente el ciphertext (c), tendríamos una ecuación asi:
m^e mod n = c.
Ahora si quisiésemos sacar el exponente privado:
c^d mod n = m.

Deberíamos resolver la ecuación: log(m,c) mod n. Lo cual es infeasible debido a la dificultad de calcular logaritmos discretos, que es una de las bases de la criptografía asimétrica, asi como la dificultad de factorizar un número primo.
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.

16BITBoy

Dios... me alejo unos momentos este puente y todo lo que esta evolucionando esto. Voy a tener que ponerme al día en cuanto termine el examen que tengo este jueves.
Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".