¿Este programa de Python es seguro?

-5

Nota: soy nuevo en las prácticas de seguridad de la información, así que siéntete libre de señalar cualquier cosa que pueda estar haciendo mejor.

Situación: Actualmente estoy creando un sistema de encriptación para la mensajería instantánea y quiero saber si lo que estoy haciendo es bueno.

Estoy creando una variante de subsitución polialfabética:

  • tome un enlace y luego obtenga todo el texto en la página web
  • cree un dict char -> list of positions a partir del texto de la página web
  • use el dict para asignar cada carácter del mensaje a una posición seleccionada (al azar) en la lista
  • codifica la posición en exadecimal
  • opcionalmente comprime el resultado si es un archivo cifrado

Me devuelve cosas así: 5118 35b0 60ec 3e19 6aa6 6bfb 32db 6cd7 4a2d para una cadena de 9 caracteres.

Hay un código completo del módulo Python y una pequeña herramienta para probar todo el módulo: enlace

Preguntas:

  • ¿Es seguro y posible crear una página web para generar una clave pública?
    • Alice quiere hablar con Bob, por ejemplo, para que Alice genere un hash con una contraseña y algunos caracteres aleatorios almacenados en su computadora (o en cualquier otro lugar)
    • Luego, Bob obtiene el hash y genera el suyo por el mismo método
    • Bob puso ambos hashes en la página web y luego le dio la clave private
    • Luego, la página web devuelve un enlace que redirige a la clave private si las informaciones proporcionadas por los parámetros de PHP generan uno de los dos hashes.
  • ¿Hay alguna forma de evitar los ataques de olfateo?

Gracias por tu ayuda.

    
pregunta Mathix420 28.05.2018 - 19:51
fuente

2 respuestas

7

Respuesta corta: No, no es seguro .

Cualquier cosa basada en cifrados de sustitución será vulnerable al análisis de frecuencia . No estoy totalmente claro a qué te refieres con esto:

  

[keygen:] construye un dict char -> list of positions a partir del texto de la página web

     

[cifrado:] usa el dictado para asignar cada carácter del mensaje a una posición seleccionada (al azar) en la lista

pero tengo la sensación de que perderá (al menos) la distribución / frecuencia de los caracteres en el mensaje. (Como mínimo) esto me dirá en qué idioma se escribió el texto y probablemente algo sobre el contenido.

Creo que es genial que estés explorando la criptografía: ¡sigue aprendiendo! Pero si va a poner esto en cualquier software más allá de los programas de juguete para su propio aprendizaje, utilice criptografía estándar como AES y RSA.

    
respondido por el Mike Ounsworth 28.05.2018 - 20:02
fuente
0

Un cifrado de sustitución es el cifrado básico en la criptografía, por lo que puede detectarse fácilmente mediante un ataque de frecuencia (eliminación rápida) o eliminación de clave (letra mala) o una fuerza bruta (mala elección), según el idioma que utilice.

Inglés 26! factorial

Por lo tanto, RSA, DES, AES son buenas opciones para utilizar un sistema criptográfico. Basado en los ataques realizados en DES & AES, requiere altos recursos computacionales para iniciar un ataque en estos algoritmos. No pueden ser atacados por ataques clásicos como el análisis matemático y la fuerza bruta.

    
respondido por el genral Hummel 29.05.2018 - 01:51
fuente

Lea otras preguntas en las etiquetas