Cifrado Katya

  • 4 Respuestas
  • 262 Vistas

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

Conectado Kirari

  • *
  • Moderador
  • Mensajes: 193
  • Actividad:
    100%
  • Country: ru
  • Reputación 11
  • No dejes que el mundo te corrompa
    • Ver Perfil
    • Baúl para el público

Cifrado Katya

  • en: Julio 15, 2020, 03:11:21 am
Prefacio

Muy buenas a todos! Espero que estén muy bien.

Hoy les traigo un tipo de cifrado que he inventado, teniendo algunos procesos ya existentes como el CBC para mejorar el sistema de encriptado. No soy matemático, por lo que las fórmulas que he escrito para el mismo no son nada del otro mundo, son bastantes simples, incluso combinándolo con el cifrado afín. Así que no hay nada de magia por detrás (aunque pueden verlo así si quieren).

Así que sin más preámbulos, comencemos.


¿Que es Katya?

Katya es un algoritmo de cifrado simétrico simple desarrollado en Python.

Cómo funciona el cifrado?

Debido a que el proceso es bastante largo de explicar por acá, les invito a leer la documentación completa que les dejaré en un rato, para así no alargarme demasiado.  ;D ;D

Cómo descargar e instalar dependencias?

Para instalar las dependencias, tipeamos lo siguiente:

Código: Bash
  1. pip install sympy

Al instalar las dependencias, como siempre, clonamos el repositorio y lógicamente, accedemos al directorio:


Código: Bash
  1. git clone https://github.com/Kirari-Senpai/Katya-Crypt.git
  2. cd Katya-Crypt/
  3.  

Documentación completa: You are not allowed to view links. Register or Login

Cómo se usa Katya?

Acá viene lo divertido  ;D. Abrimos nuestro intérprete de Python e importamos el módulo Katya:

Código: Python
  1. from katya import Katya
  2.  

Creamos el objeto katya:

Código: Python
  1. katya = Katya()
  2.  

Establecemos el abecedario (o como quieran llamarlo :p):

Código: Python
  1. katya.set_ABC()
  2.  

Se nos creará el siguiente abecedario:



Nota: por defecto el valor del método está en 0, por lo que si desea crear un ABC personalizado, entonces deberá pasarle una lista con una longitud de 91 elementos y los mismos no deben estar repetidos.

Ahora que tenemos todo preparado, empezaremos con el proceso de cifrado.

Cifrado

Para encriptar un mensaje, usaremos el método encrypt:

Parámetros:

- Cadena a cifrar
- Contraseña (menor o igual longitud que la cadena a cifrar)
- Vector de Inicialización (por defecto se genera de manera aleatoria, pero puede hacerlo usted mismo, aunque no es recomendable).


Código: Python
  1. msg = katya.encrypt("Hola Mundo!","katya")
  2.  

Salida:



Al momento de cifrar el mensaje, se generará el IV. Para poder verlo, solo escriba:

Código: Python
  1. katya.iv
  2.  

Se verá parecido a este, en longitud me refiero:



El mismo es importante, ya que servirá para descifrar el primer bloque del mensaje. Si no sabe a que me refiero, le dejo un link para que vea de que trata, ya que como dije en el prefacio, utiliza el modo de operación CBC:

You are not allowed to view links. Register or Login


Volviendo al tema de Katya... Vieron que es bastante simple? Pero eso no es todo, más adelante les mostraré otras funciones que tiene el mismo. Ahora vamos a desencriptar.

Descifrado

Para desencriptar el mensaje, usaremos el método decrypt():

Parámetros:

- Cadena *
- Contraseña *
- Vector de Inicialización (IV) usado para cifrar el primer bloque del mensaje *
- seed (lo veremos en la siguiente sección)
- subkey1 (lo veremos en la siguiente sección)
- subkey2 (lo veremos en la siguiente sección)


Código: Python
  1. katya.decrypt("¿bbd¡#¿bch¡e¿bfa¡)¿bcg¡c¿bbh¡Y¿bbg¡*¿bcg¡X¿beh¡U¿bcg¡i¿bbd¡`¿bbd¡%¿bcg¡G¿bfb¡B¿bcg¡O¿bbg¡´¿bbd¡.¿bcg¡X¿bfa¡4¿bcf¡S¿bbh¡O","katya",katya.iv)

Salida:




Necesito más seguridad, es posible?

Por supuesto! Hay varios métodos:

Método random_ABC() y set_seed()

Con el método random_ABC() alterarás el orden original del alfabeto, por lo que darás más dificultad al atacante para saber cuál es el orden correcto. De modo que al individuo que intenta desencriptar el mensaje, no le servirá de nada obtener la contraseña si no sabe el orden de los elementos.

La salida del mismo es la semilla, es decir, el número en el cual estará ordenado tu ABC:




Lo mismo podemos hacer con el método set_seed(). A diferencia del anterior, este es personalizado:



Ejemplo sencillo



Y en efecto, se puede apreciar que la cadena de cifrado no es la misma que mostramos en el ejemplo anterior. Ahora, a descifrar, le pasamos como argumento seed, el valor entero obtenido:



El mismo ejemplo se puede aplicar también para el método set_seed().

Advertencia: hay que considerar que si pierde el numero de orden o semilla, entonces, no podrá recuperar la información al momento de querer descifrarla.


Método subkeys()

Con este método se puede establecer las dos subclaves de las que estábamos hablando antes. Bueno, con la primer subclave estableceremos un número coprimo con 91 y con la segunda un número de desplazamiento para la cadena misma. Veamos un ejemplo sencillo:



Los parámetros del método son:

Parámetros

- subkey1
- subkey2

Si no tiene idea que número coprimo utilizar, no se preocupe, no tiene que calcular nada, puede utilizar el método show_possible_subkeys():

Código: Python
  1. katya.show_possible_subkeys()
  2.  
  3. [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 27, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 50, 51, 53, 54, 55, 57, 58, 59, 60, 61, 62, 64, 66, 67, 68, 69, 71, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 85, 86, 87, 88, 89, 90]

Los valores de la subclave 2 debe ser de 1 a 91.

Para desencriptar, solo pasamos los argumentos de la siguiente manera:


Código: Python
  1. katya.decrypt(msg,"katya",katya.iv,subkey1=80,subkey2=10)

Muestra



Si bien este último método no es muy seguro, se puede combinar con los métodos anteriores y así mejorar la seguridad. Eso suena bien eh? :o

Encriptar y desencriptar archivos

Advertencia: se recomienda utilizar el método reset_all() para reestablecer todos los valores (iv,subkeys,ABC) a su estado original para evitar conflictos al momento de cifrar los archivos. Esto es para que parezca que empieza de 0.

Katya nos permite cifrar archivos de una manera muy sencilla:

Código: Python
  1. katya.file_encrypt("ruta_archivo","tu_password")

Al terminar el proceso, al archivo se le añadirá la extensión .katya y además se creará otro archivo con extensión .key donde se almacenará tu contraseña, a este último debes guardarlo en un lugar secreto.

Crearé un archivo de prueba llamado testing.txt con el contenido de "Hola Mundo!":



Y empiezo a cifrar:

Código: Python
  1. katya.file_encrypt("testing.txt","katya")



Para descifrar:

Código: Python
  1. katya.file_decrypt("testing.txt.katya","katya.key")

La salida final será, obviamente, el contenido descifrado, y el archivo .key, se eliminará.

Nota: para file_decrypt() se pueden utilizar los mismos parámetros que el descifrado común.


Mostrar mensajes cifrados de manera elegante

Realmente este método no es importante, es solo para mostrar en pantalla el mensaje cifrado de una forma más clara, nada del otro mundo :p El fin, se usa de la siguiente manera:


Código: Python
  1. print(katya.elegant(msg))



En este ejemplo, cifré el siguiente mensaje:

Código: You are not allowed to view links. Register or Login
Hola Mundo! Katya es un cifrado simétrico muy simple. Saludos a todos!
Final

Bueno compañeros, espero que les haya gustado  ;D. Simplemente después de un parcial, quise relajarme un poco, y se me vino a la cabeza esto, así que decidí programarlo y plasmarlo en el foro jaja.

Falta mucho por mejorar, pero se irá viendo poco a poco, cualquier aporte al mismo, es bienvenido!

Saludos!
-Kirari
« Última modificación: Julio 15, 2020, 03:15:01 am por Kirari »
Jamás te contarán la verdadera versión, siempre te dirán la suya... Por eso... Si quieres saber la verdad, debes buscarla tú mismo...

Conectado DtxdF

  • *
  • Moderador Global
  • Mensajes: 779
  • Actividad:
    100%
  • Reputación 16
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email

Re:Cifrado Katya

  • en: Julio 24, 2020, 04:53:50 pm
Uf compañero @You are not allowed to view links. Register or Login, te luciste. Me encantó mucho, sin duda lo voy a compartir ^-^, espero más de tus aportes.

~ DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Conectado Kirari

  • *
  • Moderador
  • Mensajes: 193
  • Actividad:
    100%
  • Country: ru
  • Reputación 11
  • No dejes que el mundo te corrompa
    • Ver Perfil
    • Baúl para el público

Re:Cifrado Katya

  • en: Julio 24, 2020, 05:09:51 pm
Muchaass gracias amigo @You are not allowed to view links. Register or Login  ;D, es un place mostrar estos pequeños aportes :D.

Saludos!!
-Kirari
Jamás te contarán la verdadera versión, siempre te dirán la suya... Por eso... Si quieres saber la verdad, debes buscarla tú mismo...

Conectado Gabriela

  • *
  • Co Admin
  • Mensajes: 985
  • Actividad:
    100%
  • Country: 00
  • Reputación 21
  • Twitter: @hira_io
    • Ver Perfil
    • Email

Re:Cifrado Katya

  • en: Julio 24, 2020, 05:48:58 pm


@You are not allowed to view links. Register or Login
Como te han comentado, estupendo trabajo compañero!!!
Habrá que probarlo.

Por demás todo el marco teórico explicativo: 10.

Gracias por compartirlo.

Saludos
Gabriela

Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.

Conectado Kirari

  • *
  • Moderador
  • Mensajes: 193
  • Actividad:
    100%
  • Country: ru
  • Reputación 11
  • No dejes que el mundo te corrompa
    • Ver Perfil
    • Baúl para el público

Re:Cifrado Katya

  • en: Julio 24, 2020, 05:57:32 pm
@You are not allowed to view links. Register or Login Muchas gracias compañera  ;D ;D Trataré de traer posts más seguido.  :D

Saludos!
-Kirari
Jamás te contarán la verdadera versión, siempre te dirán la suya... Por eso... Si quieres saber la verdad, debes buscarla tú mismo...

 

Cifrado julio cesar

Iniciado por blozzter

Respuestas: 0
Vistas: 2668
Último mensaje Mayo 26, 2011, 01:53:13 am
por blozzter
Cifrado Cesar ... 3 Funciones

Iniciado por darkucla

Respuestas: 3
Vistas: 534
Último mensaje Enero 16, 2020, 12:42:18 am
por darkucla
Cifrado rot13 y atbash

Iniciado por Once

Respuestas: 3
Vistas: 4708
Último mensaje Abril 23, 2013, 08:47:19 pm
por k0ws
Cifrado Compresor [Archivos]

Iniciado por Azav

Respuestas: 8
Vistas: 4056
Último mensaje Enero 30, 2015, 04:00:56 am
por Once
Cifrado de Vigenère

Iniciado por Sanko

Respuestas: 1
Vistas: 2728
Último mensaje Septiembre 10, 2013, 10:23:26 am
por 79137913