La criptografía es un conjunto de técnicas, métodos y algoritmos que tienen como objetivo tradicional cifrar mensajes para hacerlos ininteligibles para quien no debe leerlos. Ademas tiene cuatro pilares basicos
-
Confidencialidad: Sabemos que la información únicamente es accesible por aquellos a los que va dirigida.
-
Integridad: Sabemos que la información es correcta y no ha sido modificada por terceros.
-
Autenticidad: El remitente de la información tiene una identidad que puede ser verificada.
-
No rechazo/Vinculación: Sabemos que el creador de la información es el remitente no siendo posible que haya sido un tercero.
-
Texto plano: Son los datos antes de ser cifrados. Aunque se le llame «texto» pueden ser también datos binarios como imágenes, ejecutables, etc.
-
Texto cifrado: Es el texto plano después de pasar por el proceso de cifrado.
-
Cifrado: Es el proceso de codificar la información de tal forma que sólo pueda ser leída por terceros autorizados utilizando una clave de cifrado. Esos terceros usan el proceso contrario (descifrado) junto con la clave para acceder a los contenidos del mismo.
-
Clave de cifrado: Es una secuencia de caracteres que se utiliza para realizar el cifrado de los datos y sin la cual no es posible descifrarlos. Idealmente la clave debe permanecer secreta y ser conocida sólo por los comunicantes, aunque hay otras formas de realizar esto.
-
Algoritmo de cifrado: Son el par de algoritmos capaces de convertir el texto plano en texto cifrado y viceversa utilizando una o varias claves de cifrado.
Esta técnica consiste en tomar el texto plano y aplicarle un función F que lo modifica, ademas esta funcion recibe la clave de cifrado generando el texto cifrado. Luego el receptor al recibir el texto cifrado aplica la inversa de la función F con la misma clave de cifrado para volver a obtener el texto plano.
El mayor problema radica en que ambas partes de la comunicación deben compartir la misma clave de cifrado.
-
Block Cipher: La transformacion se aplica sobre bloques de n bits sobre el mensaje. Estos bloques tienen longitud fija por lo cual en algunos casos es necesario agregar padding.
-
Stream Cipher: La transformacion se aplica sobre cada bit del mensaje.
Los modos Electronic Code-Block (ECB) y Cipher-Block Chaining (CBC) trabajan sobre bloques estrictamente, por lo cual en algunos casos se agregara padding. ECB Es el mas sencillo, donde el mensaje se divide en bloques y cada uno de ellos es cifrado por separado usando la misma clave K. CBC aplica a cada bloque la operación XOR utilizando el bloque anterior, para el primer bloque se utiliza un vector de inicializacion (IV).
Los modos Cipher FeedBack (CFB), Output Feedback (OFB) y CounTeR (CTR) convierten los algoritmos en bloques a uno de flujos. En estos modos lo que se encripta es la clava K junto con el IV o algun nonce y su counter.
Generalmente se recomienda utilizar los modos CBC o CTR.