2.1 Servicios de seguridad. En muchas de nuestras conversaciones de nuestra vida cotidiana hemos utilizado el término seguridad, y que somos expertos en seguridad, que manejamos los firewalls y que creamos, editamos políticas o reglas de seguridad, y que nuestro servidor lo tenemos muy bien protegido.
Me pregunto, realmente sabemos que queremos proteger?
Existen servicios y mecanismos de seguridad, pero siempre empezamos por los mecanismos, es decir que utilizamos las herramientas de software de seguridad las cuales instalamos, configuramos y ejecutamos para proteger a nuestro equipo.
Realmente esto es cierto? Para poder elegir un mecanismos de seguridad primero tengo que definir que es lo que me interesa proteger, es decir que servicios de seguridad necesito.
Antes de utilizar los mecanismos tenemos que tener muy en claro que servicios me interesan.
Los servicios de seguridad son:
- Autenticación: Confirmar la identidad de una o mas de las entidades en conexión.
- Control de acceso: Protección ante el uso no autorizado de recursos; lectura, escritura, borrado de un archivo en un servidor; ejecución de una rutina o programa.
- Confidencialidad: Protección de los datos de difusiones no autorizadas.
- Integridad de datos: Garantía de que los campos en los datos transmitidos o almacenados no son modificados, borrados o reproducidos.
- No repudio (No-rechazo): Asociar la identidad de un individuo con su participación en un proceso. Esto es útil para probar que un mensaje fue generado por un usuario concreto.
- Gestión de seguridad: Administrar la directiva global de seguridad, los mecanismos de seguridad específicos (por ejemplo, las claves criptográficas, los mecanismos de autenticación y otros mecanismos de control), los sucesos de seguridad, las auditorias de seguridad y la restauración de la seguridad.
Dependiendo de nuestras necesidades de seguridad podremos hacer un análisis donde la combinación de servicios y mecanismos nos ofrezca alternativas de superación para estas necesidades.
2.1.1 Autenticación.La autenticación (también conocida como
“identificación” conlleva la confirmación de las identidades de una o mas entidades. En general, puedes considerar la autenticación como el identificarte ante un sistema, subsistema, red o aplicación, mediante algún mecanismo o combinación de mecanismos.
Mecanismos:
- Nombre de usuario y contraseña (criptografía)
- Tickets de acceso: Son identificadores temporales que son solicitados por el cliente a un servidor.
- Certificados digitales: Es como una credencial la cual incluyen información estandarizada como la clave publica del propietario, nombre, fechas de caducidad, firma de una autoridad certificadora, entre otros datos.
- Tarjetas inteligentes: Pueden contener claves privadas, certificados digitales u otra información sobre la entidad. También pueden tener una protección mediante un número de identificación personal.
- Tokens (Fichas): Las tarjetas Token están protegidas por pin o por otro mecanismo, como la generación de números mediante los token de securid. Estos números son conocidos por la tarjeta y el servidor de autenticación.
- Dispositivos biométricos: Estos dispositivos realizan análisis estadísticos de patrones generados analizando una parte de una persona (retina, iris, rostro, huella dactilar, voz, etc.) para establecer una identificación personal.
2.1.2 Control de accesoMediante el control de acceso se protege el uso no autorizado de los recursos. Generalmente, hay un orden implícito, según el cual una entidad primero se identifica y autentica, y a continuación se le proporciona el acceso o se le deniega. Cada entidad tiene sus permisos de acceso a cada recurso especificado.
Mecanismos:
Listas de control de acceso: Una lista de entidades, junto a sus permisos de acceso, que tienen autorización para acceder al recurso.
Etiquetas de seguridad: Una colección de atributos asociados con una entidad que permiten la clasificación de la entidad en términos de nivel de seguridad.
- Roles o privilegios: Un atributo de privilegio que representa la posición o función que representa un usuario que busca una autenticación. Un determinado ser humano puede soportar diversos roles y de este modo requerir muchos atributos de privilegio.
- Barreras físicas: El acceso físico a dispositivos del sistema y la red debe limitarse mediante habitaciones cerradas mediante llaves, contraseñas u otros mecanismos de control de accesos, pueden ser de 1 a 3 perimetros.
- Firewalls: Son funciones de filtrado y Proxy pueden evitar el acceso a determinados recursos o direcciones de la red.
2.1.3 Confidencialidad La confidencialidad consiste en proteger los datos trasmitidos o almacenados que no puedan ser leídos por un tercero no autorizado. Podemos implementar varios algoritmos criptográficos para proporcionan la confidencialidad.
Sabemos que la redes no fueron echas tomando en cuenta el paradigma de seguridad y no es confiable trasmitir la información ya que la información viaja en texto claro y son interceptada por terceros. Pero las necesidades de enviar información nos obliga a buscar soluciones seguras como la criptografía de datos de tal forma que aunque la información sea interceptada no puedan saber cual es el mensaje.
Mecanismos: - Criptografía: proporciona niveles más altos de confidencialidad ya que el mensaje no viaja en claro.
- Esteganografia: Consiste en ocultar un mensaje de secreto en otro mensaje que aparece normal. Ha sido utilizado en el pasado, antes de la llegada de los ordenadores y las redes. Hoy en día a veces se utilizan en conjunto con la criptografía.
2.1.4 Integridad de Datos Consiste en impedir que los datos almacenados o trasmitidos sean modificados, borrados o reproducidos.
Mecanismos:
- Checksums: Es un numero que representa la suma de bloques del mensaje que se envía junto con este, y al ser recibido el mensaje se calcula el checksums y se compara con el que se recibió y si son iguales quiere decir que el mensaje no fue alterado. Este sencillo mecanismo de integridad de datos puede ser falsificado muy fácilmente. Por ejemplo: M es un mensaje puede ser interceptado y modificado de modo que se transmita un M distinto al que se envió, y además se cambiar el checksums que al ser recibido el destino no se da cuenta que fue alterado, y da por hecho que es integro.
- Control de redundancia cíclica: Consiste en una transmisión de datos que se divide en paquetes. El emisor adjunta una secuencia de n-bits llamada secuencia de control de paquete a cada paquete. El control de paquete contiene información redundante sobre el paquete que permite al receptor detectar errores en dicho paquete, también existe un escenario de ataque.
- Resúmenes de mensajes. Un resumen de mensaje es una cadena de bits que fue calculado utilizando el mensaje como datos de entrada en una función de resumen en un solo sentido. Llamamos también hash unidireccional que es fácil de procesar en un sentido pero imposible invertir. Esto quiere decir que es imposible llegar al menaje original a partir de un hash. También es dos o más mensajes no pueden tener el mismos hash.
Un ejemplo de implementación de los hash el un antivirus, algunos de estos calculan el hash para comprobar si los archivos han sido alterados o corruptos.
2.1.5 No-rechazo o No-repudioEl no-repudio pretende demostrar la participación de un individuo en el cual un proceso se relacione con la identificación de este, en otras palabras un emisor tienen la forma de garantizar que el receptor no repudiara el mensaje donde el repudio consiste en negar la autoría sobre un mensaje.
Uno de los mecanismos que se utilizan para este servicio es la certificado digital en otras palabras firma digital. También se pueden utilizar funciones hash.
Pueden existen mas servicios de seguridad, esto va depender de la políticas de la empresa u organización.
Ya tenemos nociones básicas de los servicios de seguridad, algo que tienen que quedar claro es que no se pueden garantizar todos a un 100%, hay que hacer un análisis de que es los que mas le interesa a la empresa, claro también hay que contemplar los costos, por que quizás me interese integridad y no confidencialidad o viceversa o ambas.
La mayoría de estos servicios de seguridad pueden utilizar la criptografía como mecanismos para cumplir con estos.
2.2. Criptología. Proviene del griego:
criptos (oculto) y
logos (tratado).
Es la ciencia que oculta la información.
Es el estudio de los criptosistemas: sistemas que ofrecen medios seguros de comunicación en los que el emisor oculta o cifra el mensaje antes de transmitirlo para que sólo un receptor autorizado pueda descifrarlo.
La criptología se puede dividir en 3 áreas: Criptografía, Criptoanálisis y Esteganografia.
CriptografíaLa criptografía (del griego
kryptos, "ocultar", y
grafos, "escribir", literalmente "
escritura oculta") es el arte o ciencia de cifrar y descifrar información utilizando técnicas matemáticas que hagan posible el intercambio de mensajes de manera que sólo puedan ser leídos por las personas a quienes van dirigidos.
Criptoanálisis.
Es la técnica para descifrar la información sin conocer la llave de cifrado. La más famosa es sin duda la que aplicaron a Enigma de los Nazis tras dos años de investigación pero las técnicas fueron evolucionando hasta la biometría criptográfica.
La máquina Enigma era un mecanismo de cifrado rotativo utilizado tanto para cifrado como para descifrado, ampliamente utilizada de varios modos en Europa desde los tempranos años 1920 en adelante. Su fama se la debe a haber sido adoptada por muchas fuerzas militares de Alemania desde 1930 en adelante. Su facilidad de manejo y su supuesta inviolabilidad fueron las principales razones para su amplio uso. Su cifrado, fue roto, y la lectura de la información que ofrecía en los mensajes que no protegió es a veces reconocida como la causa para acabar al menos un año antes la Segunda Guerra Mundial de lo que hubiera podido ser de otro modo.
EsteganografíaÁrea de la criptología que trata sobre la ocultación de mensajes, para evitar que se perciba la existencia del mismo.
Viene del griego stegos (ocultar) y graphia (escritura).
Es el arte y ciencia de escribir mensajes ocultos de tal forma que nadie fuera de quien lo envía y quien lo recibe sabe de su existencia.
El problema de la esteganografia es que tienen que mantener en secreto el algoritmo de ocultamiento a diferencia de la criptografía donde se conoce el algoritmo.
Los mensajes en la esteganografía muchas veces son cifrados primero por medios tradicionales, para posteriormente ser ocultados.
2.2.1 Criptografía.
Es un método que convierte un mensaje (Texto en claro) en un mensaje cifrado (Texto secreto).
Conceptos:
Texto en claro: es mensaje en su forma natural lo que se debe proteger.
Texto cifrado: Es el proceso de convertir el texto en claro en un texto ilegible, también denominado como texto cifrado o criptograma.
Sustitución. Cambiar elementos (letras, dígitos y símbolos) por otros del mensaje deacuerdo a un alfabeto.
Transposición. Reordenación de los elementos del mensaje.
Producto: Combinación de sustitución y transposición
Monoalfabeto. Un solo alfabeto.
Polialfabeto. Dos o más alfabetos.
La criptografía se clasifica en clásica y moderna.
2.2.1.1 criptografía clásica.
Las dos técnicas más básicas de cifrado en la criptografía clásica son la sustitución (que supone el cambio de significado de los elementos básicos del mensaje -las letras, los dígitos o los símbolos-) y la transposición (que supone una reordenación de las mismas); la gran mayoría de las cifras clásicas son combinaciones de estas dos operaciones básicas. El descifrado es el proceso inverso que recupera el texto plano a partir del criptograma y la clave.
Algunos algoritmos de la criptografía clásica por sustitución monoalfabéticas: Código de PolíbioEl historiador griego Políbio (204 la.C. la 122 la.C.), en su libro Historias, describe un ejemplo muy antiguo de un código poligrâmico, que es atribuido a sus contemporáneos Cleoxeno y Democleto.
El alfabeto griego sólo posee 24 letras. Políbio proponía que la 25la. Posición (vaga) fuera utilizada como señal de sincronización - inicio y fin de la transmisión. En el ejemplo abajo se utiliza el alfabeto latino que, por su parte, posee el "defecto" de poseer 26 letras. De este modo, para obtenerse la cifra, los caracteres K y Q, raros, sin embargo fonéticamente muy próximos, fueron "fundidos".
| :namespace prefix = o /> |
1 |
2 |
3 |
4 |
5 |
1 |
A |
B |
C |
D |
E |
2 |
F |
G |
H |
I |
J |
3 |
K/Q |
L |
M |
N |
O |
4 |
P |
R |
S |
T |
U |
5 |
V |
W |
X |
Y |
Z |
Cada letra es representada por la combinación de dos números, los cuales se refieren a la posición ocupada por la letra. De esta forma, A es sustituido por 11, B por 12..., L por 32, etc.
El código de Políbio tiene algunas características importantes: la reducción del número de caracteres utilizados, la conversión en números y la transformación de un símbolo en dos partes que pueden ser usadas separadamente. Su importancia en la historia de la criptografía reside en el hecho de que sirvió de base para otros códigos de cifragem, como la Cifra Playfair y la Cifra Campal Germánica (ADFGFX), usada en la
Por ejemplo: Texto en claro:
MYGNET Texto cifrado:
335422342544 El ataque para este criptosistema es por el
Análisis de Frecuencia. Cifrado César.
Utilizado por Julio César para comunicarse con sus oficiales, consiste en sustituir cada letra del mensaje por la que está k posiciones más adelante o atrás en el alfabeto de N caracteres. Si k = 3, la A se sustituiría por la D, la B por E, la C por la F y así sucesivamente.
Por ejemplo:Para: K =3
Texto en claro:
MYGNETTexto Cifrado:
PBJQHW El ataque para este criptosistema es por el
Análisis de Frecuencia. Código fuente en php:
Cifrado del Kama-Sutra Una de las descripciones más antiguas de encriptación por sustitución está en el Kama-Sutra, un texto escrito el siglo IV d.C. por el sabio hindú Vatsyayana, sin embargo basado en manuscritos datados de más de 800 años (séc. IV a.C..). El Kama-Sutra recomienda que las mujeres estudien 64 artes, incluyendo la culinaria, la forma de vestir, masaje y la preparación de perfumes. La lista también incluye algunos artes menos obvios como prestidigitación, ajedrez, encuadernación de libros y carpintería. En la lista, la de número 45 es la mlecchita-vikalpa, el arte de la escritura secreta, indicada para ayudar las mujeres a esconder los detalles de sus relaciones. Una de las técnicas recomendadas es la de formar pares aleatorios de letras del alfabeto y después sustituir cada letra del texto original por la correspondiente en el par.
A |
D |
H |
I |
K |
M |
O |
R |
S |
U |
W |
Y |
Z |
V |
X |
B |
G |
J |
C |
Q |
L |
N |
E |
F |
P |
T |
Por ejemplo: Texto en claro:
MYGNET LA COMUNIDADTexto cifrado:
CPISUZ RV MQCESGXVX Escenario de ataque:
análisis de frecuencias.
Código fuente en php Algunos algoritmos de la criptografía clásica por sustitución polialfabética: Cifrado PlayFair Desarrolle este algoritmo con fines didácticos, ya que solo soporta 25 caracteres los cuales son muy pocos, aunque se podrían hacer implementaciones con más caracteres basándose en este algoritmo pero dejaría de ser el cifrado de playfair.
Este sistema criptográfico fue inventado en 1854 por Charles Wheatstone, pero debe su nombre al Barón Playfair de St Andrews quien promovió el uso de este criptosistema.
El algoritmo utiliza una tabla o matriz de 5x5.
La tabla se llena con una palabra o frase secreta descartando las letras repetidas. Se rellenan los espacios de la tabla con las letras del alfabeto en orden. Usualmente se omite la "W" y se utiliza la "V" en su lugar o se reemplazan las "J" por "I". Esto se hace debido a que la tabla tiene 25 espacios y el alfabeto tiene 26 símbolos. La frase secreta usualmente se ingresa a la tabla de izquierda a derecha y arriba hacia abajo o en forma de espiral, pero puede utilizarse algún otro patrón. La frase secreta junto con las convenciones para llenar la tabla de 5x5 constituye la clave de encriptación.
Escenario de ataque:
Análisis de frecuencia de dígrafos. Por ser una cifra polialfabética, la Playfair dificulta el criptoanálisis. Por ser una cifra de dígrafos, es preciso hacer un análisis de frecuencia de dígrafos - y existen más dígrafos que letras - y el número de elementos disponibles para análisis disminuye. Por ejemplo: en un mensaje de 100 letras, cifrada con una sustitución simple, tenemos 100 elementos derivados de una elección de 26; en un mensaje de 100 letras, cifrada en dígrafos, tenemos 50 elementos derivados de una elección de 676.
Código fuente en php:
Cifrado de Vigenère
En el quinto volumen de sus seis libros titulados Polygraphiae, Jean Trithème describe una tabla que se imaginó y nombrada tabuló recta. En esta tabla, el alfabeto se repite en 26 líneas, con un desfase a la izquierda de una letra para cada nueva hilera.
El diplomático francés Blaise de Vigenère, que vivió de 1523 a 1596, usó la criptografía como instrumento de trabajo durante años. Con la edad de 39 años resolvió abandonar la carrera y dedicarse exclusivamente a los estudios.
En 1586, Blaise de Vigenère reanuda esta idea en su libro de criptología, el Traité des chiffres où secrètes manières d'escrire, en el cual describe detalladamente su cifra de sustitución polialfabética con palabra-llave y presenta las Carreras de Vigenère, una tabla de alfabetos cifrantes.
El gran mérito de Vigenère está en perfeccionar un método que ya había sido propuesto por otros estudiosos, pero que necesitaba ser estructurado para ofrecer la seguridad necesaria. Vigenère se basó en Alberti y Trithemius , como también en algunos contemporáneos, como Bellaso y Della Puerta.
La denominación calcula de Vigenère apareció solamente al final del siglo XVII, en el honor de el que le dio su forma definitiva. Sin embargo el término cuadrado de Vigenère es erróneo, se debería más bien decir cuadrado de Trithème.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
B |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
C |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
D |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
E |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
F |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
G |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
H |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
I |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
J |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
K |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
L |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
M |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
N |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
O |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
P |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
Q |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
R |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
S |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
T |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
U |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
V |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
W |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
X |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
Y |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Z |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
La clave del sistema de cifrado de Vigenère es una palabra de letras, del alfabeto utilizado anteriormente; esta palabra es un elemento del producto cartesiano (veces), que es justamente el alfabeto del criptosistema de Vigenère. De esta forma, el mensaje a cifrar en texto claro ha de descomponerse en bloques de elementos - letras - y aplicar sucesivamente la clave empleada a cada uno de estos bloques, utilizando la tabla anteriormente proporcionada.
Ejemplo:
Clave:
claveTexto en claro:
COMUNIDAD MYGNETTexto cifrado:
EZMPRKOAY OJGIIV Escenario de ataque:Método de Kasiski/Babbage, Índice de Coincidencia (IC) o ambos asociados.
En 1863 que el criptólogo alemán Kasiski descubrió como quebrar la cifra de Vigenère. El matemático inglés Charles Babbage ya había quebrado la cifra en 1854, sin embargo no publicó su descubrimiento.
Código fuente en php:Existen muchos mas critosistemas clásicos… 2.2.1.2 Criptografía moderna:Los modernos algoritmos de cifrado simétricos mezclan la transposición y permutación en cuanto a los algoritmos asimétricos se basan en complejas operaciones matemáticas a lo que se le conoce como logaritmo discreto.
En los sistemas de encriptación se suele distinguir entre el algoritmo o procedimiento general y la clave, que sirve para singularizar el resultado del algoritmo. En el caso del cifrado César, el algoritmo sería la regla por la cuál cambiamos cada carácter por uno que está N posiciones más adelante, mientras que la clave sería el valor concreto utilizado para N.
Lo malo de este sistema es que, si se sabe que se está utilizando, solo permite 27 sustituciones distintas (tantas como letras tienen el alfabeto), con lo que su descifrado es trivial. Para complicar un poco mas se puede utilizar, en vez de una cifra, dos, o más. Así, si la clave es 31, se sustituirá la primera letra por la que esté tres posiciones por delante, la segunda por la que esté una posición más avanzada, la tercera por la que esté tres posiciones por delante, y así sucesivamente.
2.2.1.2.1 Criptografía simétrica.Este tipo de criptografía utiliza la misma clave para cifrar y para descifrar mensajes. Las dos partes que se comunican han de ponerse de acuerdo de antemano sobre la clave a usar. Una vez ambas tienen acceso a esta clave, el remitente cifra un mensaje usándola, lo envía al destinatario, y éste lo descifra con la misma.
Toda la seguridad esta basada en la llave que comparten el emisor y el receptor los cuales deben mantenerla en secreto por que si la llave se compromete el sistema deja de ser seguro.
Existen muchos algoritmos de llave simétrica, aquí vamos a mencionar 2,
DES por ser el algoritmo mas utilizado aunque en la actualidad no es recomendable su implementación, y
AES es relativamente nuevo y es el que sustituye a
DES.
Tienen ventajas como desventajas.Es muy rápido en cuestiones de procesamiento.
Uno de los problemas de este tipo de criptografía es el acuerdo de la llaves, es un problema que se puede expresar de la siguiente manera:
N(N-1)/2 =>
(N2 – N)/2 es una ecuación exponencial donde
N es el numero de partes o nodos que tienen que compartir las llaves. Esta ecuación devuelve el número de envíos que se tienen que hacer para compartir la llave simétrica.
Algoritmo DES.
Data Encryption Standard (
DES) es un algoritmo para cifrar un mensaje, escogido como
FIPS en los Estados Unidos en 1976, y cuyo uso se ha propagado ampliamente por todo el mundo. El algoritmo fue controvertido al principio, con algunos elementos de diseño clasificados, una longitud de clave relativamente corta, y las continuas sospechas sobre la existencia de alguna puerta trasera para la National Security Agency (
NSA). Posteriormente DES fue sometido a un intenso análisis académico y motivó el concepto moderno del cifrado por bloques y su criptoanálisis.
Hoy en día,
DES se considera inseguro para muchas aplicaciones. Esto se debe principalmente a que el tamaño de clave de 56 bits es corto; las claves de
DES se han roto en menos de 24 horas. Existen también resultados analíticos que demuestran debilidades teóricas en su cifrado, aunque son inviables en la práctica. Se cree que el algoritmo es seguro en la práctica en su variante de Triple
DES, aunque existan ataques teóricos.
Desde hace algunos años, el algoritmo ha sido sustituido por el nuevo
AES (Advanced Encryption Standard).
DES es el algoritmo prototipo del cifrado por bloques — un algoritmo que toma un texto en claro de una longitud fija de bits y lo transforma mediante una serie de complicadas operaciones en otro texto cifrado de la misma longitud. En el caso de
DES el tamaño del bloque es de 64 bits.
DES utiliza también una clave criptográfica para modificar la transformación, de modo que el descifrado sólo puede ser realizado por aquellos que conozcan la clave concreta utilizada en el cifrado. La clave mide 64 bits, aunque en realidad, sólo 56 de ellos son empleados por el algoritmo. Los ocho bits restantes se utilizan únicamente para comprobar la paridad, y después son descartados. Por tanto, la longitud de clave efectiva en
DES es de 56 bits, y así es como se suele especificar.
Al igual que otros cifrados de bloque,
DES debe ser utilizado en el modo de operación de cifrado de bloque si se aplica a un mensaje mayor de 64 bits.
FIPS-81 específica varios modos para el uso con
DES, incluyendo uno para autenticación. Se pueden consultar más documentos sobre el uso de
DES en
FIPS-74 www.itl.nist.gov/fipspubs/fip74.htm Escenario de ataque:
Como para cualquier tipo de cifrado se puede realizar ataques por fuerza bruta.
Otros ataques
Existen otros ataques conocidos que pueden romper las dieciséis rondas completas de
DES con menos complejidad que un ataque por fuerza bruta: el criptoanálisis diferencial (CD), el criptoanálisis lineal (CL) y el ataque de Davies. De todas maneras, éstos ataques son sólo teóricos y no es posible llevarlos a la práctica; éste tipo de ataques se denominan a veces debilidades certificacionales.
- El criptoanálisis diferencial fue descubierto a finales de los 80 por Eli Biham y Adi Shamir, aunque era conocido anteriormente tanto por la NSA como por IBM y mantenido en secreto. Para romper las 16 rondas completas, el criptoanálisis diferencial requiere 247 textos planos escogidos. DES fue diseñado para ser resistente al CD.
- El criptoanálisis lineal fue descubierto por Mitsuru Matsui, y necesita 243 textos planos escogidos (Matsui, 1993); el método fue implementado (Matsui, 1994), y fue el primer criptoanálisis experimental de DES que se dio a conocer. No hay evidencias de que DES fuese adaptado para ser resistente a este tipo de ataque. Una generalización del CL — el criptoanálisis lineal múltiple — se propuso en 1994 Kaliski and Robshaw), y fue mejorada por Biryukov y otros (2004); su análisis sugiere que se podrían utilizar múltiples aproximaciones lineales para reducir los requisitos de datos del ataque en al menos un factor de 4 (es decir, 241 en lugar de 243). Una reducción similar en la complejidad de datos puede obtenerse con una variante del criptoanálisis lineal de textos planos escogidos (Knudsen y Mathiassen, 2000). Junod (2001) realizó varios experimentos para determinar la complejidad real del criptoanálisis lineal, y descubrió que era algo más rápido de lo predicho, requiriendo un tiempo equivalente a 239–241 comprobaciones en DES.
- El ataque mejorado de Davies: mientras que el análisis lineal y diferencial son técnicas generales y pueden aplicarse a multitud de esquemas diferentes, el ataque de Davies es una técnica especializada para DES. Propuesta por vez primera por Davies en los 80, y mejorada por by Biham and Biryukov (1997). La forma más potente del ataque requiere 250 textos planos escogidos, tiene una complejidad computacional de 250, y tiene un 51% de probabilidad de éxito.
Algoritmo AES.Advanced Encryption Standard (
AES), también conocido como Rijndael, es un esquema de cifrado por bloque adoptado como un estándar de encriptación por el gobierno de los Estados Unidos, y se espera que sea usado en el mundo entero, como también analizado exhaustivamente, como fue el caso de su predecesor, el Estándar de Encriptación de Datos (
DES). Fue adoptado por el Instituto Nacional de Estandares y Tecnología (
NIST) como un
FIPS (
PUB 197) en noviembre del 2001 después de 5 años del proceso de estandarización (vea Advanced Encryption Standard process para más detalles).
Estrictamente hablando,
AES no es precisamente Rijndael (aunque en la práctica se los llama de manera indistinta) ya que Rijndael permite un mayor rango de tamaño de bloque y clave;
AES tiene un tamaño de bloque fijo de 128 bits y tamaños de llave de 128, 192 ó 256 bits, mientras que Rijndael puede ser especificado por una clave que sea múltiplo de 32 bits, con un mínimo de 128 bits y un máximo de 256 bits.
La mayoría de los cálculos del algoritmo
AES se hacen en un campo finito determinado.
AES opera en un arreglo de 4×4 bytes, llamado state (algunas versiones de Rijndael con un tamaño de bloque mayor tienen columnas adicionales en el state). Para el cifrado, cada ronda de la aplicación del algoritmo
AES (excepto la última) consiste en cuatro pasos:
- SubBytes — en este paso se realiza una sustitución no lineal donde cada byte es reemplazado con otro de acuerdo a una tabla lookup table.
- ShiftRows — en este paso se realiza un transposición donde cada fila del state es rotado de manera cíclica un número determinado de veces.
- MixColumns — operación de mezclado que opera en las columnas del «state», combinando los cuatro bytes en cada columna usando una transformación lineal.
- AddRoundKey — cada byte del «state» es combinado con la clave «round»; cada clave «round» se deriva de la clave de cifrado usando una key schedule.
La ronda final omite la fase MixColumns.
Posible escenario de ataque:En abril de 2005, D.J. Bernstein anunció a Ataque temporizado de cache que solía romper un servidor a medida que usaba el cifrado
AES para
OpenSSL. Este servidor fue diseñado para dar la mayor cantidad de información acerca del tiempo como fuera posible, y el ataque requería cerca de 200 millones de ficheros de texto plano. Se dice que el ataque no es práctico en implementaciones del mundo real.
2.2.1.2.2 Criptografía asimétrica.Este método consiste en generar una pareja de llaves, una publica y privada, se cifra con una y ce descifra con la otra. La llave pública se puede entregar a cualquier persona y la clave que es privada se tienen que mantener en secreto y que nadie excepto el propietario tenga acceso a esta llave. Si se compromete la llave privada se tienen que generar otra pareja de llaves, pues las la llave privada y la publica son totalmente dependientes una de la otra.
El concepto de llave pública apareció en el 1976 en un artículo debido a
Diffie-HellmanLa criptografía asimétrica es costosa y requiere mucho procesamiento, no es recomendable cifrar mensajes grandes, se utiliza comúnmente para acordar las llaves simétricas, a este tipo de sistemas criptográficos se les conoce también como criptografía hibrida.
Aquí se reduce el problema de compartir la llave a polinomialmente, en vez de exponencial como era el caso de la criptografía simétrica, pero el problema aquí es autenticar las llaves publicas, ya que no hay garantía que el receptor reciba integra la llave publica o peor a un, que sea la llave de un impostor, y con esto nace todo lo que ya conocemos como certificados digitales, que certifican a las llaves publicas como genuinas y que pertenecen a una entidad, para esto debe de existir una tercera parte confiable que son las autoridades certificadoras.
Pero no vamos a entra muchos en detalles ya que se va hablar un capítulo de todo esto de los certificados digitales.
Y como algoritmo vamos a ver el
RSA para criptografía asimétrica..
RSAEl sistema criptográfico con clave pública
RSA recibe su nombre por la inicial del apellido de sus inventores: Ronald Rivest, Adi Shamir y Leonard Adleman. Todo usuario de dicho sistema hace pública una clave de cifrado y oculta una clave de descifrado. Una llave es un número de gran tamaño, que una persona puede conceptualizar como un mensaje digital, como un archivo binario o como una cadena de bits o bytes. Cuando se envía un mensaje, el emisor busca la clave pública de cifrado del receptor y una vez que dicho mensaje llega al receptor, éste se ocupa de descifrarlo usando su clave oculta. Los mensajes enviados usando el algoritmo
RSA se representan mediante números y el funcionamiento se basa en el producto de dos números primos grandes (mayores que 10100) elegidos al azar para conformar la clave de descifrado. La seguridad de este algoritmo radica en que no hay maneras rápidas de factorizar un número grande en sus factores primos utilizando computadoras tradicionales. La computación cuántica podría proveer una solución a este problema de factorización.
Los conocimientos necesarios para entender el
RSA son básicos. Ante todo, es preciso acordarse que un número primo es un número diferente de 1 que sólo es divisible exactamente por 1 o por sí mismo. Así, 3 es un número primo porque sólo tiene una división exacta cuando dividido por 1 o por 3. Ya el número 4 no es primo porque puede ser dividido exactamente por 1, 2 y 4. Si el número 4 no es un número primo, entonces puede ser factorizado, o sea, puédese encontrar los números primos que, multiplicados, resultan 4 (en el caso, 2 x 2).
Existen algunos números conocidos como primos entre sí. Dos números enteros son primos entre sí cuando no existe un divisor mayor que 1 que divida ambos. Esto significa que el máximo divisor común de los primos entre sí es igual la 1.
x |
1. |
2. |
3. |
4. |
5. |
6. |
3x |
3. |
9. |
27. |
81. |
243. |
729. |
3x (mod 7) |
3. |
2. |
6. |
4. |
5. |
1. |
Comportamiento errático de la función 3x (mod 7) |
Otro concepto necesario es la aritmética modular. En la aritmética modular no disponemos de una cantidad infinita de números, pero de un grupo finito de ellos. El mejor ejemplo es el mostrado po el reloj que, por señal, trabaja en el módulo 12. Cuando la esfera pasa del 12, no tiene como mostrar 13 horas porque el conjunto de los números disponibles va de 1 la 12. De esta forma, 12 horas + 1 hora = 1 y 9 horas + 8 horas = 5. Se suele escribir estas operaciones de la siguiente forma: 12 + 1 = 1 (mod 12) y 9 + 8 = 5 (mod 12).
El modo de encontrarse un resultado modular es dividiendo el resultado no modular por el módulo y considerar el resto. Por ejemplo, 9 + 8 = 17 y 17 ÷ 12 = 1 con resto 5. De la misma forma, 11 x 9 (mod 13) es 11 x 9 = 99 y 99 ÷ 13 = 7 con resto 8, o sea, 11 x 9 = 8 (mod 13). Podemos complicar un poco las cosas y considerar una potenciación. Digamos que la base sea 3 y que este número sea elevado a un número cualquiera que llamaremos de x. Para analizar el comportamiento de la función 3x (mod 7) acompañe los resultados obtenidos en la tabla 1. En la operación normal, los valores encontrados son crecientes. Ya en la operación modular, los resultados son erráticos y difíciles de predecir.
2.2.1.3 Criptografía por modo de operación:La criptografía por modo de operación puede ser de flujo o de bloque. Las de bloque operan en bloques de tamaño fijo, generalmente de 64 o 128 bits. Los primeros son flujos de datos se producen en tiempo real en pequeños fragmentos, donde las muestras de datos pueden ser tan pequeñas como 8 bits o incluso de 1 bit, y sería un desperdicio rellenar el resto de los 64 bits antes de encriptar y transmitirlos.
La mayoría sólo son utilizados para la confidencialidad; algunas proporcionan confidencialidad y autenticación.
ECB - Electronic codebookEl más sencillo de los modos de uso es el modo electronic codebook (ECB), en el cual los mensajes se dividen en bloques y cada uno de ellos es cifrado por separado. La desventaja de este método es que a bloques de texto en claro idénticos les corresponde bloques idénticos de texto cifrado, de manera que se pueden reconocer estos patrones como guía para descubrir el texto en claro a partir del texto cifrado. De allí que no sea recomendado para su uso en protocolos cifrados.
CBC - Cipher-block chainingEn el modo cipher-block chaining (CBC), a cada bloque de texto en claro se le aplica la operación XOR con el bloque cifrado anterior antes de ser cifrado. De esta forma, cada bloque de texto cifrado depende de todo el texto en claro procesado hasta este punto. También, para hacer cada mensaje único se utiliza un vector de inicialización. Su mayor desventaja es que es secuencial. Como no puede ser usado en paralelo (pues siempre depende del resultado anterior), su uso dificulta el procesamiento de bloques en paralelo, lo que mejoraría el desempeño del método.
CFB - Cipher feedback y OFB - output feedback
Los modos cipher feedback (CFB) y output feedback (OFB) hacen que el cifrado en bloque opere como una unidad de flujo de cifrado: se generan bloques de flujo de claves, que son operados con XOR y el texto en claro para obtener el texto cifrado. Al igual que con otras unidades de flujo de cifrado, al intercambiar un bit en el texto cifrado produce texto cifrado con un bit intercambiado en el texto en claro en la misma ubicación.
Con el cipher feedback un bloque de flujo de llave es calculado cifrándose el bloque de texto cifrado anterior.
Counter (CTR)Al igual que OFB, el modo contador convierte una unidad de cifrado por bloques en una unidad de flujo de cifrado. Genera el siguiente bloque en el flujo de claves cifrando valores sucesivos de un contador. El contador puede ser cualquier función sencilla que produzca una secuencia de números donde los resultados se repiten con muy baja frecuencia, si bien la operación más usada es un contador, el modo CTR tiene características similares al OFB, pero permite también el uso de una propiedad de acceso aleatorio para el descifrado.
Desventaja es que no proporcionan cualquier protección de integridad. Esto significa que un atacante, a pesar de no conocer la llave, puede modificar el flujo de datos de acuerdo con sus necesidades.
2.2.2 Esteganografía.Es el arte y ciencia de escribir mensajes secretos de tal forma que nadie fuera de quien lo envía y quien lo recibe sabe de su existencia; en contraste con la criptografía, en donde la existencia del mensaje es clara, pero el contenido del mensaje está oculto. Por lo general un mensaje de este tipo parece ser otra cosa, como una lista de compras, un artículo, una foto, etc.
Los mensajes en la esteganografía muchas veces son cifrados primero por medios tradicionales, para posteriormente ser ocultados por ejemplo en un texto que pueda contener dicho mensaje cifrado, resultando el mensaje esteganográfico. Un texto puede ser manipulado en el tamaño de letra, espaciado, tipo y otras características para ocultar un mensaje, sólo el que lo recibe, quien sabe la técnica usada, puede extraer el mensaje y luego descifrarlo.
Algunos ejemplos de técnicas de esteganografía que han sido usados en la historia son:
- Mensajes ocultos en tabletas de cera en la antigua Grecia, la gente escribía mensajes en una tabla de madera y después la cubrían con cera para que pareciera que no había sido usada.
- Mensajes secretos en papel, escritos con tintas invisibles entre líneas o en las partes en blanco de los mensajes.
- Durante la segunda guerra mundial, agentes de espionaje usaban micro-puntos para mandar información, los puntos eran extremadamente pequeños comparados con los de una letra de una máquina de escribir por lo que en un punto se podía incluir todo un mensaje.
- Mensajes escritos en un cinturón enrollado en un bastón, de forma que sólo el diámetro adecuado revela el mensaje.
- Mensajes escritos en el cuero cabelludo, que tras crecer el pelo de nuevo, oculta el mensaje.
Aquí esta un articulo sobre un ejemplo practico de esteganografía en una imagen.:
www.mygnet.com/articulos/php/448/ 2.2.3 Criptoanálisis.Es la ciencia que trata principalmente de crear y analizar criptosistemas seguros, se intenta romper esos sistemas, demostrando su vulnerabilidad: dicho de otra forma, trata de descifrar los criptogramas.
En el análisis para establecer las posibles debilidades de un sistema de cifrado, se han de asumir las denominadas condiciones del peor caso:
1. el criptoanalista tiene acceso completo al algoritmo de encriptación.
2. el criptoanalista tiene una cantidad considerable de texto cifrado.
3. el criptoanalista conoce la pareja de un texto cifrado con su texto en claro.
También se asume generalmente el Principio de Kerckhoffs, que establece que la seguridad del cifrado ha de residir exclusivamente en el secreto de la clave, y no en el algoritmo de cifrado como el DES, AES, etc....
Aunque para validar la robustez de un criptosistema normalmente se someten a todas las condiciones del peor caso, existen ataques más específicos, en los que no se cumplen todas estas condiciones. Como son ataques por fuerza bruta o peor aun por diccionario.
Si el atacante conoce el algoritmo de cifrado y sólo tiene acceso al criptograma, se plantea un ataque sólo al criptograma; un caso más favorable para el criptoanalista se produce cuando el ataque cumple todas las condiciones del peor caso; en este caso, el criptoanálisis se denomina de texto en claro conocido. Si además el atacante puede cifrar una cantidad indeterminada de texto en claro al ataque se le denomina de texto en claro escogido; este es el caso habitual de los ataques contra el sistema de verificación de usuarios utilizado por Unix, donde un intruso consigue la tabla de contraseñas (generalmente /etc/passwd) y se limita a realizar cifrados de textos en claro de su elección y a comparar los resultados con las claves cifradas (a este ataque también se le llama de diccionario, debido a que el atacante suele utilizar un fichero `diccionario' con los textos en claro que va a utilizar). El caso más favorable para un analista se produce cuando puede obtener el texto en claro correspondiente a criptogramas de su elección; en este caso el ataque se denomina de texto cifrado escogido.
Ataques por fuerza bruta. El ataque por fuerza bruta consiste en procedimiento en el que a partir del conocimiento del algoritmo de cifrado empleado y de un par texto plano/texto cifrado, probando el cifrado (respectivamente, descifrado) de uno de los miembros del par con cada una de las posibles combinaciones de clave, hasta obtener el otro miembro del par. El esfuerzo requerido para que la búsqueda sea exitosa con probabilidad mejor que la par será 2N − 1 operaciones, donde N es la longitud de la clave (también conocido como el espacio de claves).
Otro factor determinante en el coste de realizar un ataque de fuerza bruta es el juego de caracteres que se pueden utilizar en la clave. Contraseñas que sólo utilicen dígitos numéricos serán más fáciles de descifrar que aquellas que incluyen otros caracteres como letras.
Este ataque es ineficiente por que puede tardar mucho tiempo, años, miles de años de procesamiento cunado la clave es grande, y puede ser rápido si la clave es pequeña… por eso el algoritmo AES implementa como minimo una llave de 128 bits que son 16 caracteres ASCII.
Ataques por diccionario. El ataque por diccionario es muy parecido al ataque por fuerza bruta solo que aquí tenemos un conjunto mas pequeños de valores posibles, este tipo de ataque se basa en que los usuarios eligen claves débiles, esto quiere decir que utiliza nombres del amigos, apellidos, mascotas, fechas, etc… que se pueden encontrar en un diccionario con unas 50,000 palabras, mas aparte algunas otras comunes como 123, 123456, etc…
Por ejemplo, aplicaremos este ataque al archivo password de UNIX:
En sistemas UNIX la claves son codificadas con la función “crypt” la cual esta basado con el algoritmo DES con algunas variaciones que produce un resultado un hash de una sola dirección, esto hace que no se pueda revertir.
La función crypt utiliza un valor aleatorio llamado "salt" el cual esta formado por una cadena de dos caracteres [a-z A-Z 0-9 ./]. Este valor aleatorio permite codificar una misma clave de 4096 = 642 maneras distintas.
Nota.
Los dos primeros caracteres de una clave codificada, son los valores de "salt", el resto hasta un total de 13 caracteres ASCII es la clave codificada según el valor de "salt".
Una vez que sabemos esto nos queda realizar un código en c para implementar un ataque por diccionario.
#include
#include
#include
char *crypt(const char *key, const char *salt);
char * fdicc="dicES.txt";
char * fpass="/etc/passwd";
char salt[3];
char palabra[32];//palabra del diccionario
char password[128][13];//128 claves de 13 caracteres
char c;
int main(void)
{ int i=0,k=0,n=0,ok=0;
FILE * fd,*fp;
if((fp=fopen(fpass,"r"))!= NULL)
{ //Carga los passwords
do{ c=fgetc(fp);
if(c==':')i++;
else { if(c=='n'){ n=0; i=0; k++; }
else if(i==1)password[k][n++]=c;
}
}while(c!=EOF);
//Proceso de comparar el passwords con crypt(dccc
)
for(k=k-1; k>=0; k--)
{ ok=0;
printf("n[%s]",password[k]);
salt[0]=password[k][0];
salt[1]=password[k][1];
salt[2]='';
for(i=0;i
Al realizar la prueba con la página web http://mygnet.com genera un resumen diferente cada vez que cambia un segundo de la fecha:
Resultados:
50e7d6e4e8bef9cf03c89c2a29b2081
6606cbabbd24732cc8f9c8584d325e5
4ecb2c428ea31b59e937c97f48049a1
6f557fa6edb2a13fabbc685fece12fe
Nota este código es para ejemplificar la construcción de una función hash, pero para que sea correcto debe de pasar por una serie de pruebas y para que no existan colisiones.
2.4 Construcción de protocolos seguros.
Hasta este punto ya tenemos nociones de la criptología tanto históricas como modernas y sabemos lo tipos de ataques que deben soportar los criptosistemas para considerase seguros, en base a esto hay que proteger los servicios de seguridad que necesitamos para un sistema u organización.
Si yo digo que quiero confidencialidad que vamos a utilizar?
Si envió un mensaje de A a B y quiero que solo B lo descifre?
Recuerda que por naturaleza las redes son inseguras, fueron echas sin pensar en el paradigma de seguridad, si envió un texto en claro, es interceptado y puede ser leído por un tercero o intruso, este puede ser alterado y reenvido con fines particulares del intruso o simplemente puede ver la información que puede utilizar en cualquier momento.
Entonces tenemos que usar la criptografía para la confidencialidad, de hecho para casi todos los servicios de redes vamos utilizar la criptografía donde vamos a combinar diferentes técnicas y algoritmos de cifrado.
2.4.1 Protocolo para la confidencialidad
En particular este caso es el más común con el cual nos vamos enfrentar. Tenemos a A y B que son nodos o entes que quieren comunicarse pero no quieren que los mensajes viajen en claro, por que la información que van a compartir es clasificada como secreta.
Objetivo. Es enviar información de A a B y viceversa donde solo ellos dos puedan saber el mensaje.
Suposiciones:
A y B comparten una llave 128 bits que previamente acordaron la cual la vamos a llamar como K.
A y B acordaron también el algoritmo a utilizar: AES en operación CBC
A y B cuentan con las condiciones computacionales para el procesamiento de estos algoritmos.
Etc…
Protocolo:
A: cifra el Texto en claro con la llave K con AES-CBC
A: envía el texto cifrado a B.
B: recibe el texto Cifrado.
B: descifra el texto con la llave K con AES-CBC.
Ya tenemos el protocolo de confidencialidad, se hace lo mismo cuando B envía un mensaje cifrado a A.
Veamos si existe escenario de ataque.
Alguien que no sea A o B puede descifrar el mensaje?
No verdad.
Alguien que no sea A o B puede obtener el texto cifrado?
Si, pero no le serviría de mucho por que como la información viaja cifrada, no podría leerlo.
Este protocolo cumple con la confidencialidad, pero nótese que aquí existen todas las condiciones, ya que se acordó la llave entre A y B.
Lo único que puede hacer el intruso es recabar todos los mensajes cifrados y almacenarlos para posteriormente hacer criptoanálisis, que pasaría si el algoritmo fuese el cifrado de cesar, o algún otro algoritmo clásico, pues se implementaría un criptoanálisis por frecuencias, verdad…
Todos los algoritmos de cifrado que tenga una llave se pueden atacar por fuerza bruta o por diccionario, esto depende del tamaño de la llave a utilizar y el uso de una llave fuerte es decir utilizar letras, número y caracteres especiales para la conformación de la llave.
2.4.2 Protocolo para la integridad.
Si lo que nos interesa es que nuestros mensajes lleguen íntegros de A a B y viceversa, es decir que los mensajes viajen en texto claro pero no queremos que sean cambiados.
Por ejemplo si un Director manda un mensaje a un Subdirector de una empresa X, dando instrucciones de algo, por que eso suelen hacer lo Directores, que pasaría si un intruso intercepta el mensaje y solo cambia algunas cosas para que la orden del director se diferente.
El ataque aquí es muy sencillo, I que es el intruso, para el mensaje que vienen A que es el director, I entonces los edita para su conveniencia y se lo envía ya modificado a B que es el subdirector. Entonces B lo recibe la orden.
Como evitaríamos este tipo de ataque con la criptografía?
Claro lo que estas pensando eso es, con funciones Hash.
Están seguros que solo con funciones hash?, esta bien hay que hace la prueba.
A: calcula la función Hash del mensaje.
A: envia el mensaje en texto claro pero le anexa el hash del mensaje.
B: recibe el mensaje y el hash que envió A.
B: calcula el hash del mensaje y compara con el que recibió de A, si son iguales quiere decir que no sufrió modificaciones el mensaje, y todos felices.
Vamos aver si no existe escenario de ataque para este protocolo.
Que pasaria si I que es el intruso, obtiene el mensaje y lo modifica, claro ya no va coincidir el mensaje con el hash, verdad.
Pero que pasaria si I, recaulciula el hash del mensaje modificado, Ups, este si que es un problema, por que cundo llege el mensaje con su hash a B, va coincidir, verdad!.
Bueno entonces hay que hacer una modificación al protocolo anterior, ya que no requerimos confidencialidad, no vamos a cifrar el mensaje, solo requerimos integridad, entonces que vamos a cifrar?.
Claro que si, el hash.
No hay que olvidar los supuestos como el objetivo son importante para coda protocolo.
Objetivo. Es enviar información de A a B donde se compruebe la integridad del mensaje.
Suposiciones:
A y B comparten una llave 128 bits que previamente acordaron la cual la vamos a llamar como K.
A y B acordaron también el algoritmo a utilizar: AES en operación CBC
A y B acordaron el algoritmo de hash que van utilizar, MD5.
A y B cuentan con las condiciones computacionales para el procesamiento de estos algoritmos.
Etc…
Protocolo.
A: calcula la función Hash del mensaje.
A: cifra el hash del mensaje con AES-CBC utilizando la llave K.
A: envía el mensaje en texto claro y anexa el cifrado del hash del mensaje.
B: recibe el mensaje en texto claro y el hash cifrado que envió A.
B: descifra el hash del mensaje recibido.
B: calcula el hash del mensaje y lo compara con hash descifrado que recibió de A, si son iguales quiere decir que no sufrió modificaciones el mensaje, y ahora si todos felices.
Aquí ya no hay posibilidad de ataque, por que si I intercepta el mensaje y lo cambia, no sabe la llave que comparte A y B para recalcular el hash.
4.3 Protocolo para la Integridad y confidencialidad
Hasta este punto estoy seguro que ustedes ya pueden hacer este protocolo.
Se trata que la información llegue integra y que sea confidencial.
Bueno este protocolo se resumen al primero, por que ya que solo A y B comparten la misma llave y si uno de ellos envio el mensaje, y no pudo ser alterada por que para editarla I tendría que saber la llave.
Pero si quieren hacer algo mas completo, pues tendríamos que calcular el hash del mensaje y mandarlo junto con el mensaje cifrado todo con K y utilizando un algoritmo de cifrado.
4.4 Protocolo para la autenticación mutua.
Este protocolo es para autenticar quien esta mandando el mensaje, si es A es quien dice ser. Los protocolos anteriores todos son de autenticación pero unidireccional, lo que quiere decir que solo se esta autenticando A ya que A envía el mensaje, y al ser descifrado por B, entonces B comprueba que ha sido enviodo por A, y que nadien mas que el, por qie tiene la llave.
Solo falta que B se autentique. Esto es de la misma manera cuando B envía un mensaje cifrado y A lo descifra, A comprueba que B es el que solo pudo enviar el mensaje por la misma razón anterior. a esa autenticación se le conoce como autenticación mutua.
Si tenemos el siguiente protocolo para autenticación por medio de un nombre de usuario y contraseña.
Seria d ela siguiente manera:
A: envia el siguiente mensaje a B; quiero conectarme
B: responde; quien eres?
A: dice; soy martin
B: responde martin, dame tu contraseña?
A: dice; 123456
B: Ok, compara con la base de datos y dice Ok; si eres martín, pasale.
A: puede pasar por que ya se autentico.
El primer error de este protocolo de autenticación es que todo viaja en texto claro, y el Intruso la puede obtener, este es el caso del protocolo TELNET, que la autenticación viaja en claro.
Bueno, repensamos un poco este protocolo y le agregamos la criptografía:
E = cifrar
D = descifrar.
A: envia el siguiente mensaje a B pero cifrado; E( quiero conectarme )
B: responde cifrado tambien; E(quien eres?)
A: dice; E(soy martin)
B: responde; E( martin, dame tu contraseña?)
A: dice; E(123456)
B: Ok, compara con la base de datos y dice Ok; E(si eres martín, pásale).
A: entonces puede pasar.
Aquí hay varios problemas todavía si bien es cierto ya no se envía en claro, pero se sigue enviando la contraseña la contraseña nunca es recomendable que se envié, mas bien lo que se envía es algo que conoce B y se cifra con la contraseña de tal manera que al recibirlo B lo descifra y compra lo que ya sabe y auténtica al usuario.
Bueno independiente mente de lo anterior.
Hay que buscar un escenario de atque.
Que pasaría si I que es el intruso, va capturando el texto cifrado que va enviando A a B, de tal manera que depuse I envía el primer mensaje cifrado que capturo de A y se lo envía a B, y B le responde:
B: E(quien eres?)
I: Segundo texto cifrado
B: responde; E( martin, dame tu contraseña?)
I: responde con el tercer texto cifrado
B: Ok, compara con la base de datos y dice Ok; E(si eres martín, pásale).
I: entonces I puede entrar.
A este tipo de ataque se le conoce como ataque de replica.
Como hacer un protocolo que sea seguro para un ataque de replica.
Si A como B generan números seudoaleatorios y los utilizan solo una vez por cada envió del mensaje.
El protocolo quedaría de la siguiente manera:
N= Numero seudoaleatorio único, solo una ves por cada mensaje
A envia a B: E( quiero conectarme; Na1 ), B ya no va a recibir ningún mensaje con Na1
B envia a A: E(quien eres?;Nb1;Na1), B regresa el Na1 y agrega un numero Nb1 de el
A envia a B: E(soy martin; Na2;Nb1), A compara su Na1 con el que envió y envía Nb1 y Na2
B envia a A: E(martin, dame tu contraseña?;Nb2;Na2) B compara sus numero Nb1 y envía un Nb2
A envia a B: E(123456;Na3;Nb2) A compara Na2 y envía un Na3
B envia a A: E(si eres martín, pásale; Nb3;Na3). Lo mismo….
A: entonces puede entrar.
Veamos aquí si sigue existiendo el ataque de replicas,
Dado que el protocolo exige que por cada envió de mensaje se envié un numero generado seudoaleatoriamente, esto con la finalidad de no se puedan replicar los mensajes cifrados por un intruso.
Existe un escenario de ataque, a este protocolo, bueno eso lesqueda de tarea?
2.4.5 Protocolos para Diffie-Hellman.
Este protocolo es muy útil para el intercambio de claves para criptografía simétrica.
El protocolo Diffie-Hellman (debido a Whitfield Diffie y Martin Hellman) permite el intercambio secreto de claves entre dos partes que no han tenido contacto previo. Se emplea generalmente como medio para acordar claves simétricas que serán empleadas para el cifrado de una sesión.
No voy entrar en detalles, pero esta es una alternativa para compartir las claves.
También se puede utilizar criptografía asimétrica para el envió de llaves.
Biblografía.
serdis.dis.ulpgc.es/
Bueno creo que esto es todo, me hubiera gustado profundizar en algunos temas e incluir algunos otros, pero entonces ya no seria un articulo…
Estamos pensando en hacer también una distribución digital especial de seguridad informática.
Un saludo.