martes, 24 de noviembre de 2015

6.8 CIFRADO



El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido, de manera que sólo pueda leerlo la persona que cuente con la clave de cifrado adecuada para descodificarlo. Por ejemplo, si realiza una compra a través de Internet, la información de la transacción (como su dirección, número de teléfono y número de tarjeta de crédito) suele cifrarse a fin de mantenerla a salvo. 


Existen muchas defensas frente a los ataques informáticos, que abarcan toda la gama que va desde la metodología a la tecnología. La herramienta de carácter más general que está a disposición de los usuarios y de los diseñadores de sistemas es la criptografía. En esta sección vamos a explicar algunos detalles acerca de la criptografía y de su uso en el campo de la seguridad informática.


En una computadora aislada, el sistema operativo puede determinar de manera fiable quienes son el emisor y el receptor de todas las comunicaciones interprocesos, ya que el sistema operativo controla todos los canales de comunicaciones de la computadora. En una red de computadoras, la situación es bastante distinta. Una computadora conectada a la red recibe bits desde el exterior, y no tiene ninguna forma inmediata y fiable de determinar que maquina o aplicación ha enviado esos bits. De forma similar, la propia computadora envía bits hacia la red sin tener ninguna forma de determinar quién puede llegar a recibirlos.


Comúnmente, se utilizan las direcciones de red para inferir los emisores y receptores potenciales de los mensajes que circulan por la red. Los paquetes de red llegan con una dirección de origen, como por ejemplo una dirección IP. Y cuando una computadora envía mensajes, indica quinen es el receptor pretendido del mismo especificando una dirección de destino. Sin embargo, para aquellas aplicaciones en que la seguridad tenga importancia, correríamos el riesgo de meternos en problemas si asumiéramos que la dirección de origen o de destino de un paquete permite determinar con fiabilidad quien ha enviado o recibido dicho paquete. Una computadora maliciosa podría enviar un mensaje con una dirección de origen falsificada y, asimismo, otras muchas computadoras distintas de la especificada por la dirección de destino podrían (y normalmente hacen) recibir un paquete. Por ejemplo, todos los encaminadores ubicados en la ruta hacia el destino recibirán también el paquete. ¿Cómo puede, entonces, decidir el sistema operativo si debe conceder una solicitud, cuando no puede confiar en el origen especificado en dicha solicitud? ¿Y cómo se supone que debe proporcionar protección para una solicitud o para un conjunto de datos, cuando no puede determinar quien recibirá la respuesta o el contenido del mensaje que envié a través de la red?


Generalmente, se considera impracticable construir una red (de cualquier tamaño) en la que se pueda “confiar” en este sentido en las direcciones de origen y destino de los paquetes. Por tanto, la única alternativa es eliminar, de alguna manera, la necesidad de confiar en la red; este es el trabajo de la criptografía. Desde un punto de vista abstracto, la criptografía se utiliza para restringir los emisores y/o receptores potenciales de un mensaje. La criptografía moderna se basa en una serie de secretos, denominados clave, que se distribuyen selectivamente a las computadoras de una red y se utilizan para procesar mensajes. La criptografía permite al receptor de un mensaje verificar que el mensaje ha sido creado por alguna computadora que posee una cierta clave: esa clave es el origen del mensaje. De forma similar, un emisor puede codificar su mensaje de modo que solo una computadora que disponga de una cierta clave pueda decodificar el mensaje, de manera que esa clave se convierte en el destino. Sin embargo, a diferencia de las direcciones de red, las claves están diseñadas de modo que no sea computacionalmente factible calcularlas a partir de los mensajes que se hayan generado con ellas, ni a partir de ninguna otra información publica. Por tanto, las claves proporcionan un medio mucho más fiable de restringir los emisores y receptores de los mensajes. Observe que la criptografía es un campo de estudio completo por derecho propio, con una gran complejidad; aquí, vamos a explorar únicamente los aspectos más importantes de aquellas partes de la criptografía que se relacionan con los sistemas operativos.








Sistema de privacidad criptográfico.


En un sistema de privacidad criptográfico, el remitente desea transmitir cierto mensaje no cifrado a un receptor legítimo, la transmisión ocurre sobre un canal inseguro asume ser monitoreado o grabado en cinta por un intruso.


El remitente pasa el texto a una unidad de encriptación que transforma el texto a un texto cifrado o criptograma; el mismo no es entendible por el intruso. El mensaje es transmitido entonces, sobre un canal seguro. Al finalizar la recepción el texto cifrado pasa a una unidad de descripción que regenera el texto. 








Criptoanálisis.

Criptoanálisis es el proceso de intentar regenerar el mensaje desde el texto cifrado pero sin conocimiento de las claves de encriptación. Esta es la tarea normal de los intrusos. Si el intruso o criptoanalista no puede determinar un mensaje desde el texto cifrado (sin la clave), entonces el sistema de criptografía es seguro.


Métodos y técnicas de encriptación









Cesar

Esta técnica consistía simplemente en sustituir una letra por la situada tres lugares más allá en el alfabeto esto es la A se transformaba en D, la B en E y así sucesivamente hasta que la Z se convertía en C.

Rumsfeld
Este método utiliza más de un alfabeto cifrado para poner en clave el mensaje y que se cambia de uno a otro según se pasa de una letra del texto en claro a otra.

Es decir que deben tenerse un conjunto de alfabetos cifrados y una forma de hacer corresponder cada letra del texto original con uno de ellos.


RSA
En los sistemas tradicionales de cifrado debe comunicarse una clave entre el emisor y el receptor del mensaje, el problema aquí es encontrar un canal seguro para transmitir dicha clave. Este problema viene a resolverse en los sistemas de clave pública la clave de cifrado, pues un tiempo enormemente de ordenador es necesario para encontrar una transformación de descifrado a partir de la de cifrado.

DES

DES fue desarrollado por IBM a mediados de los setenta. Aunque tiene un buen diseño, su tamaño de clave de 56 bits es demasiado pequeño para los patrones de hoy.

DES (Data Encriptaron Standard) es un mecanismo de encriptación de datos de uso generalizado. Hay muchas implementaciones de hardware y software de DES. Este transforma la información de texto llano en datos encriptados llamados texto cifrado mediante el uso de un algoritmo especial y valor semilla llamado clave. Si el receptor conoce la clave, podrá utilizarla para convertir el texto cifrado en los datos originales. Es un mecanismo de encriptado simétrico.


Chafen & Winnowing

Esta técnica propuesta por Donald Rivest. Es más un intento de esquivar las restricciones a la criptografía en EE.UU. (y otros países) que una propuesta razonable debido al tamaño de los mensajes resultantes.


El término inglés “winnowing” se tomara como aventar es decir separar el grano de la paja y el término “chafen” por el castellano empajar (cubrir o rellenar con paja). La idea básica consiste en mezclar la información real (grano) con otra de relleno (paja) de modo que sea imposible separarlas excepto para el destinatario.

SKIPJACK

Este algoritmo fue descalificado por el gobierno de Estados Unidos. Algunos detalles sobre el algoritmo en sí y sus aplicaciones en la práctica a los chips Clíper y Capitoné.


Skipjack fue desarrollado por la NSA inicialmente para los chips Clíper y Capitoné. Su diseño comenzó en 1985 y se completó su evaluación en 1990.








BIFIDO
El método Bífido es un cifrado fraccionario. Es decir que cada letra viene representada por una o más letras o símbolos, y donde se trabaja con estos símbolos más que con las letras mismas.


WLBYKYAAOTB

Este método altera la frecuencia de los caracteres a diferencia de lo que ocurre por ejemplo con el cifrado mono alfabético. Admite algunas variaciones como por ejemplo dividir la lista en 3,4,..., n partes.









Cifrado exponencial
Es un sistema basado en la exponenciación modular, debido Poli y Hallan (1978). Este método es resistente al criptoanálisis.

Blowfish

Este algoritmo realiza un cifrado simple en 16 ciclos, con un tamaño de bloque de 64 bytes para un total de 448 bits. Aunque hay una fase compleja de la inicialización. El cifrado de datos es muy eficiente en los microprocesadores grandes.

Cifrado

La gran desventaja de las llaves secretas es que requieren un canal seguro para ser distribuidas - Si una contraseña es enviada por un canal inseguro puede ser interceptada, y no habría manera de lograr que quien la intercepte descifre con ella los mensajes enviados, o evitar que modifique o envié mensajes falsificando su identidad. No siempre disponemos de un canal seguro. Lo que es más, estrictamente hablando, los canales seguros simplemente no existen. Sea como sea que la información sea transmitida, siempre podrá ser escuchada por un tercero. Si hace falta tener un canal seguro para intercambiar las contraseñas, la utilidad de las contraseñas se vuelve nula.

La primera respuesta a estos problemas viene de Pifie y Hallan [5], siendo una de las implementaciones más comunes la RSA (por las siglas de sus autores, Rivest, Shamir y Ademan). Ellos proponen un sistema en el cual haya dos funciones: E \( _{k} \) para cifrar y D \( _{k} \) para descifrar un mensaje en claro P, tal que D \( _{k} \)(E \( _{k} \)(P)) = P. [ 4 ]


Las funciones E \ (_ {k} \) y D \ (_ {k} \) se traducen en un par único de llaves para llevar a cabo una comunicación encriptada: Una llave pública y una llave privada. La llave publica es distribuida a cuantas personas estén interesadas en ella, mientras que la llave privada se guarda celosamente. Cuando una persona quiere enviarme un mensaje cifrado, lo cifra utilizando mi llave pública, y solo yo podre descifrarlo utilizando mi llave privada. Estas funciones, además, tienen la característica que si bien calcularlas en el sentido correcto es relativamente sencillo, pero intentar aplicarlas en el sentido inverso (encontrar una función inversa a E \ (_ {k} \) que nos permita encontrar P) es tan difícil que se vuelve altamente impráctico.


Otra importante característica de los algoritmos derivados del trabajo de Pifie y Hallan es que las funciones aplicadas son simétricas: Se puede aplicar tanto D \( _{k} \)(E \( _{k} \)(P)) = P como E \( _{k} \)(D \( _{k} \)(P)) = P.

Una fuerte desventaja de las llaves asimétricas es su complejidad matemática. Además de ser mucho más complejas las funciones necesarias para realizar este tipo de cifrado, esto se refleja desde el tamaño de la llave: Las más cortas empleadas hoy en día son de 512 bits, y no se consideran seguras de menos de 1024. No es poco común, por otra parte, encontrar llaves de hasta 2048 bits.






Sistemas de cifrado simétrico.

Los sistemas de cifrado simétrico son aquellos que utilizan la misma clave para cifrar y descifrar un documento. El principal problema de seguridad reside en el intercambio de claves entre el emisor y el receptor ya que ambos deben usar la misma clave. Por lo tanto se tiene que buscar también un canal de comunicación que sea seguro para el intercambio de la clave. Es importante que dicha clave sea muy difícil de adivinar ya que hoy en día los ordenadores pueden adivinar claves muy rápidamente. Por ejemplo el algoritmo de cifrado DES usa una clave de 56 bits, lo que significa que hay 72 mil billones de claves posibles. Actualmente ya existen ordenadores especializados que son capaces de probar todas ellas en cuestión de horas. Hoy por hoy se están utilizando ya claves de 128 bits que aumentan el "espectro" de claves posibles (2 elevado a 128) de forma que aunque se uniesen todos los ordenadores existentes en estos momentos no lo conseguirían en miles de millones de años.

Sistemas de cifrado asimétrico.
También son llamados sistemas de cifrado de clave pública. Este sistema de cifrado usa dos claves diferentes. Una es la clave pública y se puede enviar a cualquier persona y otra que se llama clave privada, que debe guardarse para que nadie tenga acceso a ella. Para enviar un mensaje, el remitente usa la clave pública del destinatario para cifrar el mensaje. Una vez que lo ha cifrado, solamente con la clave privada del destinatario se puede descifrar, ni siquiera el que ha cifrado el mensaje puede volver a descifrarlo. Por ello, se puede dar a conocer perfectamente la clave pública para que todo aquel que se quiera comunicar con el destinatario lo pueda hacer.

Un sistema de cifrado de clave pública basado en la factorización de números primos se basa en que la clave pública contiene un número compuesto de dos números primos muy grandes. Para cifrar un mensaje, el algoritmo de cifrado usa ese compuesto para cifrar el mensaje. Para descifrar el mensaje, el algoritmo de descifrado requiere conocer los factores primos, y la clave privada tiene uno de esos factores, con lo que puede fácilmente descifrar el mensaje.

Es fácil, con los ordenadores de hoy en día, multiplicar dos números grandes para conseguir un número compuesto, pero es muy difícil la operación inversa, Dado ese número compuesto, factorizarlo para conocer cada uno de los dos números. Mientras que 128 bits se considera suficiente en las claves de cifrado simétrico, y dado que la tecnología de hoy en día se encuentra muy avanzada, se recomienda en este caso que la clave pública tenga un mínimo de 1024 bits. Para un ataque de fuerza bruta, por ejemplo, sobre una clave pública de 512 bits, se debe factorizar un numero compuesto de hasta 155 cifras decimales.







Autenticación

Autenticación ( griego: αυθεντικ?? = verdadero o genuino, de ' los atentes' = el autor) es el acto de establecimiento o confirmación de algo (o alguien) como autentico, es decir que reclama hecho por o sobre la cosa son verdadero. La autenticación de un objeto puede significar (pensar) la confirmación de su procedencia, mientras que la autenticación de una persona a menudo consiste en verificar su identidad. La autenticación depende de uno o varios factores de autenticación.

En términos de seguridad de redes de datos, se puede considerar uno de los tres pasos fundamentales (AAA). Cada uno de ellos es, de forma ordenada:

Autenticación En la seguridad de ordenador, la autenticación es el proceso de intento de verificar la identidad digital del remitente de una comunicación como una petición para conectarse. El remitente siendo autenticado puede ser una persona que usa un ordenador, un ordenador por sí mismo o un programa del ordenador. En un web de confianza, "autenticación" es un modo de asegurar que los usuarios son quien ellos dice que ellos son - que el usuario que intenta realizar funciones en un sistema es de hecho el usuario que tiene la autorización para hacer así.

Mecanismo general de autenticación

La mayor parte de los sistemas informáticos y redes mantienen de uno u otro modo una relación de identidades personales (usuarios) asociadas normalmente con un perfil de seguridad, roles y permisos. La autenticación de usuarios permite a estos sistemas asumir con una seguridad razonable que quien se está conectando es quien dice ser para que luego las acciones que se ejecuten en el sistema puedan ser referidas luego a esa identidad y aplicar los mecanismos de autorización y/o auditoria oportunos.

El primer elemento necesario (y suficiente estrictamente hablando) por tanto para la autenticación es la existencia de identidades biunívocamente identificadas con un identificador único (valga la redundancia). Los identificadores de usuarios pueden tener muchas formas siendo la más común una sucesión de caracteres conocida comúnmente como logan.
El proceso general de autenticación consta de los siguientes pasos:

El usuario solicita acceso a un sistema.

El sistema solicita al usuario que se autentique.

El usuario aporta las credenciales que le identifican y permiten verificar la autenticidad de la identificación.

El sistema valido según sus reglas si las credenciales aportadas son suficientes para dar acceso al usuario o no.



Distribución de claves

Lo ideal sería que pudiéramos distribuir nuestra clave entregándosela en persona a nuestros corresponsales. Sin embargo, en la práctica las claves se distribuyen a menudo por correo electrónico o algún otro medio de comunicación electrónica. La distribución por correo electrónico es una buena práctica solo cuando tengamos unos pocos corresponsales, e incluso si tuviéramos muchos corresponsales, podríamos usar un medio alternativo como puede ser publicar nuestra clave publica en nuestra página en Internet. Sin embargo, esto es inútil si las personas que necesitan nuestra clave pública no saben dónde encontrar nuestra página.

Para solventar este problema existen los servidores de claves públicas, que recolectan y distribuyen las claves públicas. Cuando un servidor recibe una clave pública, bien la añade a la base de datos o bien la fusiona con una copia de la clave. Cuando alguien requiere al servidor una clave pública, este la busca en la base de datos, y si la encuentra, la envía a quien se la haya solicitado.


Los servidores de claves también son útiles cuando hay muchas personas que firman las claves de otras con frecuencia. Sin un servidor de claves, cuando Arranca firma la clave de Javier, debería enviar a esta una copia de la clave firmada por el, de manera que Javier pudiera añadir la clave firmada a su anillo de claves así como distribuirla a todos sus corresponsales. Mediante este proceso Javier y Arancha sirven a la totalidad de la comunidad construyendo lazos en forma de anillos de confianza, o lo que es lo mismo, mejorando la seguridad de PGP. De todos modos esto es una molestia si se firman las claves con frecuencia.


El uso de un servidor de claves facilita este proceso. Después de firmar la clave de Javier, Arancha puede enviar la copia firmada por el al servidor de claves. El servidor de claves añade la firma de Arancha a la copia que ya posee de Javier. Las personas que estén interesadas en actualizar su copia de la clave de Javier, consultan al servidor por propia iniciativa para obtener la clave actualizada. Javier no necesita distribuir la clave, y puede obtener las firmas en su clave requiriéndolas al servidor.


Se pueden enviar una o más claves usando la opción de la línea de ordenes --send-keys. Esta opción toma uno o más especificadores de claves, y envía las claves especificadas al servidor de claves. El servidor al que se envían las claves es especifica con la opción de la línea de ordenes --keyserver. Paralelamente, la opción --recv-keys se usa para obtener claves desde un servidor de claves, pero la opción --recv-keys requiere el uso de un identificador de claves para poder especificar la clave deseada. En el siguiente ejemplo Javier envía su clave pública al servidor de claves certserver.pgp.com, y a continuación actualiza su copia de la clave de Arancha desde el mismo servidor.