# Algoritmo de cifrado basado en columnas

“Cifrado BEN” Por: Benjamin Cardenas Garcia

## Introducción

Algoritmo de cifrado basado en columnas de matrices: tenemos varios factores, un factor de cifrado (FC) que es la cifras que hay en el cifrado, y otro factor, los Dígitos (D), que son los valores posibles para crear las combinaciones, como binario; 1 y 0, son 2 cifras, solo que aquí no habrá ceros, es solo números enteros positivos.
Por ejemplo, para FC=3 y D=3, sería 1, 2, y 3. El número más grande en los dígitos se llama Dígito Mayor (DM), que se necesitará para cifrar.
Qué juntos dan 27 posibilidades, podríamos aprovecharlo para el abecedario y un guion bajo (A=111, B=112, C=113, _=333, etc).

## Proceso de cifrado

Para cifrar se necesita una frase. Esta frase puede ser de cualquier longitud, ya que se puede adaptar repitiendo del inicio. Por ejemplo, la frase llave BACA.
Ahora, se deben crear las matrices:
* Una Matriz de Mensaje (MM) con el mensaje distribuido en las columnas.
* Las filas serán equivalentes al FC, en este caso 3.
* Entonces se distribuye en columnas de 3 filas.
* Si el mensaje es ABC, la matriz en este ejemplo sería:
Así se convertirá de letras a matriz, distribuyendo en las columnas, por eso es cifrado basado en columnas.
Luego se debe convertir la frase llave igualmente en matriz adaptándola a la longitud del mensaje. Esta es la Matriz Llave (MK). Por ejemplo, si el mensaje es más largo que la frase, solo se repite (ej. BACABA).
Para cifrar:
* Sumas la matriz del mensaje con la matriz de la llave adaptada.
* El resultado puede tener números que superen los dígitos de cifrado (C).
* Por ejemplo, que sean arriba del 1, 2, 3 (ej. 4, 6, etc.).
Entonces se crea la Matriz de Adaptación (MA), siguiendo la condición:
* Si el número en esa posición es mayor al DM, se coloca el DM en esa posición.
* Si el número es menor o igual al DM, se pone 0 en esa posición.
Luego se realiza:
(Restar la Matriz de Adaptación a la Matriz Cifrada Inapta)
El resultado es la Matriz de Mensaje Cifrado (MC).

## Descifrado

Para descifrar mensajes se realiza la operación inversa, usando la Matriz Llave (MK).
* Se toma la Matriz de Mensaje Cifrado (MC) y se le resta la Matriz Llave (MK).
* Esto puede dar números negativos, generando la Matriz Descifrada Inapta (MDI).
Ahora se usa una Matriz de Adaptación de Descifrado (MAD), con la regla:
* Si el número en la posición es igual o menor a 0, se coloca el DM en esa posición.
* Si el número es mayor a 0, se coloca 0.
Luego se realiza la operación:
(Sumar la Matriz Descifrada Inapta y la Matriz de Adaptación de Descifrado)
Y esto nos da la Matriz de Mensaje Descifrado (MMD).

## Diccionario

Ahora debemos definir un diccionario. Este es totalmente libre, a excepción de que debe tener ciertos dígitos (no 0), y que todos los valores no pueden superar ni esos dígitos ni el número de cifras.
Ejemplo:
* Si tienes del 1 al 4, todas tus combinaciones deben ser con los números del 1 al 4.
* Y ser de las cifras que tú definas (ej. del 1 al 4 y con 3 cifras, dando en total 64 posibilidades).
El diccionario debe usarse en su totalidad de posibilidades, porque si tienes un valor y no tienes un símbolo asociado a este, será un simple número. Claro que se puede usar así, y ya que sea descifrado estará asociado a un símbolo existente en el diccionario.
Pero la idea es que todo el diccionario esté ocupado y todos los valores asociados para garantizar la seguridad.
El diccionario es independiente de todo lo demás, por lo cual debe guardarse y almacenarse de manera segura y accesible.
Ejemplo de asociación en matriz:

## Matrices

Las matrices se crean distribuyendo las letras horizontalmente en las columnas y estas van hacia abajo.
Gracias a las características del diccionario, todos sus valores tienen las cifras del FC, entonces la cantidad de filas es el FC.
Cada letra/valor ocupa una columna y se lee de izquierda a derecha.
Para convertir de la matriz a los valores asociados, o a texto plano, solo es leer columna por columna y transcribir de arriba hacia abajo en texto plano los números o directamente asociarlos a letras.
Los mensajes cifrados, descifrados, llaves, etc., pueden representarse en símbolos alfanuméricos o en los mismos valores asociados a estos.
Es decir: puede estar en letras o números.

## Ventajas del Cifrado BEN

El punto de este cifrado es facilitarlo para el ser humano:
* No usa división modular.
* No usa exponenciación.
* Solo usa sumas, restas y lógica.
Este algoritmo es amigable con el ser humano y práctico para hacer a mano sin calculadora.
Es sencillo, eficiente y seguro.
Al ser un cifrado simétrico, se necesita discreción al tener conocimiento de la palabra clave (como todo cifrado simétrico).

## Conclusiones

Es una mezcla entre el Cifrado de Hill, el Cifrado de Vigenère y mi toque práctico y algorítmico.
La diferencia es que en esos se usa la división módulo.
Y el punto de mi cifrado es facilitar las operaciones para poder hacerlo práctico y eficiente en circunstancias donde no tienes una calculadora, computador o dispositivo inteligente a la mano.
Es un tipo de cifrado simétrico basado en:
* Diccionario
* Palabra clave
* Matrices
El estándar para el correcto y eficiente funcionamiento de este cifrado es FC=3, ya que con esto abarcamos todo el abecedario, incluyendo la Ñ, sin tener tantos valores como para no poder asignarle letras y con la facilidad de los cálculos a mano.
Este solo ofrecería letras mayúsculas y no números, pero es el punto perfecto entre lo práctico y lo complejo.
Los números se podrían encriptar como posiciones, esto se indicaría en el mensaje. Por ejemplo:
“Esta es mi número”, seguido de letras sin sentido.
Sabrás que la posición de cada letra significaría un número, así el diccionario puede extenderse a otros contextos.
Este cifrado todavía no tiene nombre, pero podría ser Cifrado Basado En Columnas o Cifrado Basado En Diccionario.
Cuando encuentre un nombre y tenga una explicación más clara, lo publicaré.
Honorario y sincero agradecimiento a los pioneros de la criptografía, Lester S. Hill y Blaise de Vigenère, ya que sus contribuciones fundamentales han sido la base de este trabajo.

## Ejemplo de Cifrado

Diccionario:
A=111, B=112, C=113, D=121, E=122, F=123, G=131, H=132, I=133, J=211, K=212, L=213, M=221, N=222, O=223, P=231, Q=232, R=233, S=311, T=312, U=313, V=321, W=322, X=323, Y=331, Z=332, _=333
Mensaje a cifrar: Hola
Palabra clave: Key
Proceso de cifrado:
Matriz Mensaje (MM):
Matriz Llave (MK):
Matriz Cifrada Inapta (MCI = MM + MK):
Matriz de Adaptación (MA):
Matriz Cifrada Final (MC = MCI - MA):
Resultado del cifrado:
* MC Texto: STJX
* MC Número: