¿Que Tipos de Ataques se realizan a las Redes de Datos?
Tipos de Ataques
SCANNING (Búsqueda)
El Scaneo, como método de descubrir canales de comunicación susceptibles de ser explotados, lleva en uso mucho tiempo. La idea es recorrer (scanear) tantos puertos de escucha como sea posible, y guardar información de aquellos que sean receptivos o de utilidad para cada necesidad en particular. Muchas utilidades de auditoría también se basan en este paradigma.
El Scaneo de puertos pertenece a la Seguridad Informática desde que era utilizado en los sistemas de telefonía. Dado que actualmente existen millones de números de teléfono a los que se pueden acceder con una simple llamada, la solución lógica (para encontrar números que puedan interesar) es intentar conectarlos a todos.
La idea básica es simple: llamar a un número y si el módem devuelve un mensaje de conectado, grabar el número. En otro caso, la computadora cuelga el teléfono y llama al siguiente número. Scanear puertos implica las mismas técnicas de fuerza bruta. Se envía una serie de paquetes para varios protocolos y se deduce que servicios están "escuchando" por las respuestas recibidas o no recibidas.
Existen diversos tipos de Scanning según las técnicas, puertos y protocolos explotados:
TCP Connect() Scanning
Esta es la forma básica del scaneo de puertos TCP. Si el puerto está escuchando, devolverá una respuesta de éxito; cualquier otro caso significará que el puerto no está abierto o que no se puede establecer conexión con a él.
Las ventajas que caracterizan esta técnica es que no necesita de privilegios especiales y su gran velocidad.
Su principal desventaja es que este método es fácilmente detectable por el Administrador del sistema. Se verá un gran número de conexiones y mensajes de error para los servicios en los que se ha conseguido conectar la máquina que lanza el scanner e inmediatamente se ha desconectado.
TCP SYN Scanning
Cuando dos procesos establecen una comunicación usan el modelo Cliente/Servidor para establecer la conexión. La aplicación del Servidor "escucha" todo lo que ingresa por los puertos. La identificación del Servidor se efectúa a través de la dirección IP del sistema en el que se ejecuta y del número de puerto del que depende para la conexión. El Cliente establece la conexión con el Servidor a través del puerto disponible para luego intercambiar datos.
La información de control llamada HandShake (saludo) se intercambia entre el Cliente y el Servidor para establecer un dialogo antes de transmitir datos.
Los "paquetes" o segmentos TCP tienen banderas que indican el estado del mismo.
El protocolo TCP de Internet, sobre el que se basa la mayoría de los servicios (incluyendo el correo electrónico, el web y el IRC) implica esta conexión entre dos máquinas. El establecimiento de dicha conexión se realiza mediante lo que se llama Three-Way Handshake ("conexión en tres pasos") ya intercambian tres segmentos. En forma esquemática se tiene:
1. El programa Cliente (C) pide conexión al Servidor (S) enviandole un segmento SYN (Synchronize Sequence Number). Este segmento le dice a S que C desea establecer una conexión.
2. S (si está abierto y escuchando) al recibir este segmento SYN (activa su indicador SYN) y envía una autentificación ACK de manera de acuse de recibo a C. Si S está cerrado envía un indicador RST.
3. C entonces ACKea (autentifica) a S. Ahora ya puede tener lugar la transferencia de datos.
Cuando las aplicaciones conectadas terminan la transferencia, realizaran otra negociación a tres bandas con segmentos FIN en vez SYN.
La técnica TCP SYN Scanning, se implementa un scaneo de "media-apertura", dado que nunca se abre una sesión TCP completa. Se envía un paquete SYN (como si se fuera a usar una conexión real) y se espera por la respuesta. Al recibir un SYN/ACK se envía, inmediatamente, un RST para terminar la conexión y se registra este puerto como abierto.
La principal ventaja de esta técnica de escaneo es que pocos sitios están preparados para registrarlos. La desventaja es que en algunos sistemas Unix, se necesitan privilegios de Administrador para construir estos paquetes SYN.
TCP FIN Scanning- Stealth Port Scanning
Hay veces en que incluso el scaneo SYN no es lo suficientemente "clandestino" o limpio. Algunos sistemas (Firewalls y filtros de paquetes) monitorizan la red en busca de paquetes SYN a puertos restringidos. Para subsanar este inconveniente los paquetes FIN, en cambio, podrían ser capaces de pasar sin ser advertidos. Este tipo de Scaneo está basado en la idea de que los puertos cerrados tienden a responder a los paquetes FIN con el RST correspondiente. Los puertos abiertos, en cambio, suelen ignorar el paquete en cuestión.
Este es un comportamiento correcto del protocolo TCP, aunque algunos sistemas (entre los que se hallan los de Microsoft(r)) no cumplen con este requerimiento, enviando paquetes RST siempre, independientemente de si el puerto está abierto o cerrado. Como resultado, no son vulnerables a este tipo de scaneo. Sin embargo, es posible realizarlo en otros sistemas Unix.
Este último es un ejemplo en el que se puede apreciar que algunas vulnerabilidades se presentan en las aplicación de tecnologías (en este caso el protocolo TCP nacido en los años ´70) y no sobre sus implementaciones. Es más, se observa que una implementación incorrecta (la de Microsoft(r)) soluciona el problema. "Muchos de los problemas globales de vulnerabilidades son inherentes al disño original de algunos protocolos".
Fragmentation Scanning
Esta no es una nueva técnica de scaneo como tal, sino una modificación de las anteriores. En lugar de enviar paquetes completos de sondeo, los mismos se particionan en un par de pequeños fragmentos IP. Así, se logra partir una cabecera IP en distintos paquetes para hacerlo más difícil de monitorizar por los filtros que pudieran estar ejecutándose en la máquina objetivo.
Sin embargo, algunas implementaciones de estas técnicas tienen problemas con la gestión de este tipo de paquetes tan pequeños, causando una caída de rendimiento en el sistema del intruso o en el de la víctima. Problemas de esta índole convierte en detectables a este tipo de ataque.
Eavesdropping-Packet Sniffing
Muchas redes son vulnerables al Eavesdropping, o a la pasiva intercepción (sin modificación) del tráfico de red. Esto se realiza con Packet Sniffers, los cuales son programas que monitorean los paquetes que circulan por la red. Los Sniffers pueden ser colocado tanto en una estación de trabajo conectada a la red, como a un equipo Router o a un Gateway de Internet, y esto puede ser realizado por un usuario con legítimo acceso, o por un intruso que ha ingresado por otras vías.
En la cabecera de los paquetes enviados a través de una red, entre otros datos, se tiene, la dirección del emisor y la del destinatario. De esta forma, independientemente de protocolo usado, las tramas llegan a su destino. Cada maquina conectada a la red (mediante una placa con una dirección única) verifica la dirección destino del paquete. Si estas direcciones son iguales asume que el paquete enviado es para ella, caso contrario libera el paquete para que otras placas lo analicen.
Un Sniffers consiste en colocar a la placa de red en un modo llamado promiscuo, el cual desactiva el filtro de verificación de direcciones y por lo tanto todos los paquetes enviados a la red llegan a esta placa (computadora donde está instalado el Sniffer).Inicialmente este tipo de software, era únicamente utilizado por los Administradores de redes locales, aunque con el tiempo llegó a convertirse en una herramienta muy usada por los intrusos.
Actualmente existen Sniffers para capturar cualquier tipo de información específica. Por ejemplo passwords de un recurso compartido o de acceso a una cuenta, que generalmente viajan sin encriptar al ingresar a sistemas de acceso remoto. También son utilizados para capturar números de tarjetas de crédito y direcciones de e-mails entrantes y salientes. El análisis de tráfico puede ser utilizado también para determinar relaciones entre organizaciones e individuos.Para realizar estas funciones se analizan las tramas de un segmento de red, y presentan al usuario sólo las que interesan.
Normalmente, los buenos Sniffers, no se pueden detectar, aunque la inmensa mayoría, y debido a que están demasiado relacionados con el protocolo TCP/IP, si pueden ser detectados con algunos trucos.
Snooping-Downloading
Los ataques de esta categoría tienen el mismo objetivo que el Sniffing: obtener la información sin modificarla.
Sin embargo los métodos son diferentes. Aquí, además de interceptar el tráfico de red, el atacante ingresa a los documentos, mensajes de correo electrónico y otra información guardada, realizando en la mayoría de los casos un downloading (copia de documentos) de esa información a su propia computadora, para luego hacer un análisis exhaustivo de la misma.
El Snooping puede ser realizado por simple curiosidad, pero también es realizado con fines de espionaje y robo de información o software. Los casos mas resonantes de este tipo de ataques fueron: el robo de un archivo con mas de 1700 números de tarjetas de crédito desde una compañía de música mundialmente famosa, y la difusión ilegal de reportes oficiales reservados de las Naciones Unidas, acerca de la violación de derechos humanos en algunos países europeos en estado de guerra.
ATAQUES DE AUTENTIFICACIÓN
Este tipo de ataque tiene como objetivo engañar al sistema de la víctima para ingresar al mismo. Generalmente este engaño se realiza tomando las sesiones ya establecidas por la víctima u obteniendo su nombre de usuario y password.
Spoofing-Looping
Spoofing puede traducirse como "hacerse pasar por otro" y el objetivo de esta técnica, justamente, es actuar en nombre de otros usuarios, usualmente para realizar tareas de Snooping o Tampering (ver a continuación Ataques de Modificación y Daño). Una forma común de Spoofing es conseguir el nombre y password de un usuario legítimo para, una vez ingresado al sistema, tomar acciones en nombre de él.
El intruso usualmente utiliza un sistema para obtener información e ingresar en otro, y luego utiliza este para entrar en otro, y así sucesivamente. Este proceso, llamado Looping, y tiene la finalidad de "evaporar" la identificación y la ubicación del atacante.
El camino tomado desde el origen hasta el destino puede tener muchas estaciones, que exceden obviamente los límites de un país. Otra consecuencia del Looping es que una compañía o gobierno pueden suponer que están siendo atacados por un competidor o una agencia de gobierno extranjera, cuando en realidad están seguramente siendo atacado por un Insider, o por un estudiante a miles de Km de distancia, pero que ha tomado la identidad de otros.
La investigación de procedencia de un Looping es casi imposible, ya que el investigador debe contar con la colaboración de cada Administrador de cada red utilizada en la ruta. El envío de falsos e-mails es otra forma de Spoofing que las redes permiten. Aquí el atacante envía E-Mails a nombre de otra persona con cualquier motivo y objetivo. Tal fue el caso de una universidad en EE.UU. que en 1998, que debió reprogramar una fecha completa de exámenes ya que alguien en nombre de la secretaría había cancelado la fecha verdadera y enviado el mensaje a toda la nómina de estudiantes.
Muchos ataques de este tipo comienzan con Ingeniería Social y los usuarios, por falta de cultura, facilitan a extraños sus identificaciones dentro del sistema usualmente través de una simple llamada telefónica.
Spoofing
Este tipo de ataques (sobre protolocos) suele implicar un buen conocimiento del protocolo en el que se va a basar el ataque. Los ataques tipo Spoofing bastante conocidos son el IP Spoofing, el DNS Spoofing y el Web Spoofing IP Spoofing
Con el IP Spoofing, el atacante genera paquetes de Internet con una dirección de red falsa en el campo From, pero que es aceptada por el destinatario del paquete. Su utilización más común es enviar los paquetes con la dirección de un tercero, de forma que la víctima "ve" un ataque proveniente de esa tercera red, y no la dirección real del intruso. El esquema con dos puentes es el siguiente:
Nótese que si la Victima descubre el ataque verá a la PC 3 como su atacante y no el verdadero origen. Este ataque se hizo famoso al usarlo Kevin Mitnick (ver Anexo II).
DNS Spoofing
Este ataque se consigue mediante la manipulación de paquetes UDP pudiéndose comprometer el servidor de nombres de dominios (Domain Name Server-DNS) de Windows NT(c). Si se permite el método de recursión en la resolución de "Nombre"Dirección IP" en el DNS, es posible controlar algunos aspectos del DNS remoto. La recursión consiste en la capacidad de un servidor de nombres para resolver una petición de dirección IP a partir de un nombre que no figura en su base de datos. Este es el método típico (y por defecto) de funcionamiento.
Web Spoofing
En el caso Web Spoofing el atacante crea un sitio web completo (falso) similar al que la víctima desea entrar. Los accesos a este sitio están dirigidos por el atacante, permitiéndole monitorizar todas las acciones de la víctima, desde sus datos hasta las passwords, números de tarjeta de créditos, etc. El atacante también es libre de modificar cualquier dato que se esté transmitiendo entre el servidor original y la víctima o viceversa.
IP Splicing-Hijacking
Se produce cuando un atacante consigue interceptar una sesión ya establecida. El atacante espera a que la victima se identifique ante el sistema y tras ello le suplanta como usuario autorizado.
Utilización de BackDoors
"Las puertas traseras son trozos de código en un programa que permiten a quien las conoce saltarse los métodos usuales de autentificación para realizar ciertas tareas. Habitualmente son insertados por los programadores del sistema para agilizar la tarea de probar código durante la fase de desarrollo".
Esta situación se convierte en una falla de seguridad si se mantiene, involuntaria o intencionalmente, una vez terminado el producto ya que cualquiera que conozca el agujero o lo encuentre en su código podrá saltarse los mecanismos de control normales.
Utilización de Exploits
Es muy frecuente ingresar a un sistema explotando agujeros en los algoritmos de encriptación utilizados, en la administración de las claves por parte la empresa, o simplemente encontrado un error en los programas utilizados.
Los programas para explotar estos "agujeros" reciben el nombre de Exploits y lo que realizan es aprovechar la debilidad, fallo o error hallado en el sistema (hardware o software) para ingresar al mismo. Nuevos Exploits (explotando nuevos errores en los sistemas) se publican cada día por lo que mantenerse informado de los mismos y de las herramientas para combatirlos es de vital importancia.
Obtención de Passwords
Este método comprende la obtención por "Fuerza Bruta" de aquellas claves que permiten ingresar a los sistemas, aplicaciones, cuentas, etc. atacados. Muchas passwords de acceso son obtenidas fácilmente porque involucran el nombre u otro dato familiar del usuario y, además, esta nunca (o rara vez) se cambia. En esta caso el ataque se simplifica e involucra algún tiempo de prueba y error. Otras veces se realizan ataques sistemáticos (incluso con varias computadoras a la vez) con la ayuda de programas especiales y "diccionarios" que prueban millones de posibles claves hasta encontrar la password correcta. La política de administración de password será discutida en capítulos posteriores.
Uso de Diccionarios
Los Diccionarios son archivos con millones de palabras, las cuales pueden ser passwords utilizadas por los usuarios. Este archivo es utilizado para descubrir dicha password en pruebas de fuerza bruta. El programa encargado de probar cada una de las palabras encripta cada una de ellas (mediante el algoritmo utilizado por el sistema atacado) y compara la palabra encriptada contra el archivo de passwords del sistema atacado (previamente obtenido). Si coinciden se ha encontrado la clave de acceso al sistema mediante el usuario correspondiente a la clave hallada. Actualmente es posible encontrar diccionarios de gran tamaño orientados, incluso, a un área específico de acuerdo al tipo de organización que se este atacando.
En la siguiente tabla podemos observar el tiempo de búsqueda de una clave de acuerdo a su longitud y tipo de caracteres utilizados. La velocidad de búsqueda se supone en 100.000 passwords por segundo (este número suele ser mucho mayor dependiendo del programa utilizado). Aquí puede observarse la importancia e la utilización de passwords con 8 caracteres de longitud (al menos) y con todos los caracteres disponibles.
DENIAL OF SERVICE (DOS)
Los protocolos existentes actualmente fueron diseñados para ser empleados en una comunidad abierta y con una relación de confianza mutua. La realidad indica que es más fácil desorganizar el funcionamiento de un sistema que acceder al mismo; así los ataques de Negación de Servicio tienen como objetivo saturar los recursos de la víctima de forma tal que se inhabilita los servicios brindados por la misma.
Jamming o Flooding
Este tipo de ataques desactivan o saturan los recursos del sistema. Por ejemplo, un atacante puede consumir toda la memoria o espacio en disco disponible, así como enviar tanto tráfico a la red que nadie más pueda utilizarla.
Aquí el atacante satura el sistema con mensajes que requieren establecer conexión. Sin embargo, en vez de proveer la dirección IP del emisor, el mensaje contiene falsas direcciones IP (usando Spoofing y Looping). El sistema responde al mensaje, pero como no recibe respuesta, acumula buffers con información de las conexiones abiertas, no dejando lugar a las conexiones legítimas. Muchos ISPs (proveedores de Internet) han sufrido bajas temporales del servicio por ataques que explotan el protocolo TCP. Muchos Hosts de Internet han sido dados de baja por el "ping de la muerte" (una versión-trampa del comando ping). Mientras que el ping normal simplemente verifica si un sistema esta enlazado a la red, el ping de la muerte causa el bloqueo instantáneo del equipo. Esta vulnerabilidad ha sido ampliamente utilizada en el pasado pero, aún hoy pueden encontrarse sistemas vulnerables. Otra acción común es la de enviar millares de e-mails sin sentido a todos los usuarios posibles en forma continua, saturando los sistemas destinos.
Syn Flood
Como ya se explicó en el TCP SYN Scanning el protocolo TCP se basa en una conexión en tres pasos. Si el paso final no llega a establecerse, la conexión permanece en un estado denominado "semiabierto". El Syn Flood es el más famoso de los ataques del tipo Denial of Service, publicado por primera vez en la revista Phrack. Se basa en un "saludo" incompleto entre los dos hosts. El Cliente envía un paquete SYN pero no responde al paquete ACK ocasionando que la pila TCP/IP espere cierta cantidad de tiempo a que el host hostil responda antes de cerrar la conexión. Si se crean muchas peticiones incompletas de conexión (no se responde a ninguna), el Servidor estará inactivo mucho tiempo esperando respuesta. Esto ocasiona la lentitud en los demás servicios.
El problema es que muchos sistemas operativos tienen un límite muy bajo en el número de conexiones "semiabiertas" que pueden manejar en un momento determinado. Si se supera ese límite, el servidor sencillamente dejará de responder a las nuevas peticiones de conexión que le vayan llegando. Las conexiones "semiabiertas" van caducando tras un tiempo, liberando "huecos" para nuevas conexiones, pero mientras el atacante mantenga el Syn Flood, la probabilidad de que una conexión recién liberada sea capturada por un nuevo SYN malicioso es muy alta.
La potencia de este ataque reside en que muchos sistemas operativos fijan un límite del orden de 5 a 30 conexiones "semiabiertas", y que éstas caducan alcabo de un par de minutos. Para mantener el servidor fuera de servicio, un atacante sólo necesita enviar un paquete SYN cada 4 segundos (algo al alcance de, incluso, un módem de 300 baudios). Este ataque suele combinarse también con el IP Spoofing, de forma de ocultar el origen del ataque.
Connection Flood
La mayoría de las empresas que brindan servicios de Internet (ISP) tienen un límite máximo en el número de conexiones simultaneas. Una vez que se alcanza ese límite, no se admitirán conexiones nuevas. Así, por ejemplo, un servidor Web puede tener, por ejemplo, capacidad para atender a mil usuarios simultáneos. Si un atacante establece mil conexiones y no realiza ninguna petición sobre ellas, monopolizará la capacidad del servidor. Las conexiones van caducando por inactividad poco a poco, pero el atacante sólo necesita intentar nuevas conexiones, (como ocurre con el caso del Syn Flood) para mantener fuera de servicio el servidor.
Net Flood
En estos casos, la red víctima no puede hacer nada. Aunque filtre el tráfico en sus sistemas, sus líneas estarán saturadas con tráfico malicioso, incapacitándolas para cursar tráfico útil. Un ejemplo habitual es el de un teléfono: si alguien quiere molestar, sólo tiene que llamar, de forma continua. Si se descuelga el teléfono (para que deje de molestar), tampoco se puede recibir llamadas de otras personas. Este problema es habitual, por ejemplo, cuando alguien intenta mandar un fax empleando el número de voz: el fax insiste durante horas y sin que el usuario llamado pueda hacer nada al respecto.
En el caso de Net Flooding ocurre algo similar. El atacante envía tantos paquetes de solicitud de conexión que las conexiones auténticas simplemente no pueden competir. En casos así el primer paso a realizar es el ponerse en contacto con el Proveedor del servicio para que intente determinar la fuente del ataque y, como medida provisional, filtre el ataque en su extremo de la línea. El siguiente paso consiste en localizar las fuentes del ataque e informar a sus Administradores, ya que seguramente se estarán usando sus recursos sin su conocimiento y consentimiento. Si el atacante emplea Ip Spoofing, esto puede ser casi imposible, ya que en muchos casos la fuente del ataque es, a su vez, víctima y el origen último puede ser prácticamente imposible de determinar.
Land Attack
Este ataque consiste en un Bug (error) en la implementación de la pila TCP/IP de las plataformas Windows(c). El ataque consiste en mandar a algún puerto abierto de un servidor (generalmente al 113 o al 139) un paquete, maliciosamente construido, con la dirección y puerto origen igual que la dirección y puerto destino. Por ejemplo se envían un mensaje desde la dirección 10.0.0.1:139 hacia ella misma. El resultado obtenido es que luego de cierta cantidad de mensajes enviados-recibidos la máquina termina colgándose.
Existen ciertas variantes a este método consistente, por ejemplo, en enviar el mensaje a una dirección específica sin especificar el puerto Smurf o Broadcast Storm. Este ataque es bastante simple y a su vez devastador. Consiste en recolectar una serie de direcciones para a continuación mandar una petición ICMP (simulando un Ping) a cada una de ellas en serie, varias veces, falsificando la dirección IP de origen. Este paquete maliciosamente manipulado, será repetido en Broadcast, y cientos ó miles de hosts (según la lista de direcciones de Broadcast disponible) mandarán una respuesta a la víctimacuya dirección IP figura en el paquete ICMP.
Supernuke o Winnuke
Un ataque característico (y quizás el más común) de los equipos con Windows(c) es el Nuke, que hace que los equipos que escuchan por el puerto UDP 137 a 139 (utilizados por los protocolos Netbios de Wins), queden fuera de servicio (o disminuyan su rendimientos) al enviarle paquetes UDP manipulados. Generalmente se envían fragmentos de paquetes, que la máquina víctima detecta como inválidos pasando a un estado inestable.
Teardrop I y II-Newtear-Bonk-Boink
Al igual que el Supernuke, los ataques Teardrop I y Teardrop II afectan a fragmentos de paquetes. Algunas implementaciones de colas IP no vuelven a armar correctamente los fragmentos que se superponen, haciendo que el sistema se cuelgue. Windows NT(c) 4.0 de Microsoft(r) es especialmente vulnerable a este ataque. Aunque existen Patchs (parches) que pueden aplicarse para solucionar el problema, muchas organizaciones no lo hacen, y las consecuencias pueden devastadoras.
Los ataque tipo Teardrop son especialmente peligrosos ya que existen multitud de implementaciones (algunas de ellas forman paquetes), que explotan esta debilidad. Las más conocidas son aquellas con el nombre Newtear, Bonk y Boink.
E-Mail Bombing-Spamming
El E-Mail Bombing consiste en enviar muchas veces un mensaje idéntico a una misma dirección, saturando así mailbox del destinatario.El Spamming, en cambio se refiere a enviar el e-mail miles de usuarios, hayan estos solicitados el mensaje o no. Es muy utilizado por las empresas para publicitar sus productos. El Spamming esta siendo actualmente tratado por las leyes europeas como una violación de los derechos de privacidad del usuario.
ATAQUES DE MODIFICACIÓN-DAÑO
Tampering o Data Diddling
Esta categoría se refiere a la modificación desautorizada de los datos o el software instalado en el sistema víctima (incluyendo borrado de archivos). Son particularmente serios cuando el que lo realiza ha obtenido derechos de Administrador o Supervisor, con la capacidad de disparar cualquier comando y por ende alterar o borrar cualquier información que puede incluso terminar en la baja total del sistema. Aún así, si no hubo intenciones de "bajar" el sistema por parte del atacante; el Administrador posiblemente necesite darlo de baja por horas o días hasta chequear y tratar de recuperar aquella información que ha sido alterada o borrada. Como siempre, esto puede ser realizado por Insiders o Outsiders, generalmente con el propósito de fraude o de dejar fuera de servicio a un competidor.
Son innumerables los casos de este tipo: empleados (o externos) bancarios que crean falsas cuentas para derivar fondos de otras cuentas, estudiantes que modifican calificaciones de exámenes, o contribuyentes que pagan para que se les anule una deuda impositiva. Múltiples Web Sites han sido víctimas del cambio en sus páginas por imágenes (o manifiestos) terroristas o humorísticos, como el ataque de The Mentor, ya visto, a la NASA. Otras veces se reemplazan versiones de software por otros con el mismo nombre pero que incorporan código malicioso (virus, troyanos, etc.). La utilización de programas troyanos y difusión de virus esta dentro de esta categoría, y se profundizará sobre el tema en otra sección el presente capítulo.
Borrado de Huellas
El borrado de huellas es una de las tareas mas importantes que debe realizar el intruso después de ingresar en un sistema, ya que si se detecta su ingreso el Administrador buscará como conseguir "tapar el hueco" de seguridad, evitar ataques futuros e incluso rastrear al atacante. Las Huellas son todas las tareas que realizó el intruso en el sistema y por lo general son almacenadas en Logs (archivo que guarda la información de lo que se realiza en el sistema) por el sistema operativo. Los archivos Logs son una de la principales herramientas (y el principal enemigo del atacante) con las que cuenta un Administrador para conocer los detalles de las tareas realizadas en el sistema y la detección de intrusos
Ataques Mediante Java Applets
Java es un lenguaje de programación interpretado desarrollado inicialmente por SUN. Su mayor popularidad la merece en su alto grado de seguridad. Los más usados navegadores actuales, implementan Máquinas Virtuales Java (MVJ) para ser capaces de ejecutar programas (Applets) de Java. Estos Applets, al fin y al cabo no son más que código ejecutable y como tal, susceptible de ser manipulado por intrusos. Sin embargo, partiendo del diseño, Java siempre ha pensado en la seguridad del sistema. Las restricciones a las que somete a los Applets son de tal envergadura (imposibilidad de trabajar con ficheros a no ser que el usuario especifique lo contrario, imposibilidad de acceso a zonas de memoria y disco directamente, firma digital, etc.) que es muy difícil lanzar ataques. Sin embargo, existe un grupo de expertos especializados en descubrir fallas de seguridad en las implementaciones de las MVJ.
Ataques Mediante JavaScript y VBScript
JavaScript (de empresa Netscape(r)) y VBScript (de Microsoft(r)) son dos lenguajes usados por los diseñadores de sitios Web evitando el uso de Java. Los programas realizados son interpretados por el navegador. Aunque los fallos son mucho más numerosos en versiones antiguas de JavaScript, se pueden encontrar algunos de los siguientes:
• Cuando apareció JavaScript, éste permitía el envío de mensajes de correo electrónico sin el reconocimiento del usuario, la lectura del historial de páginas visitadas, la lectura de directorios y de archivos. Estas fueron razón más que suficiente para que cientos de intrusos informáticos se aprovecharan de estas debilidades.
• El problema más importante apareció en Netscape 2.0 y fue bautizado como "Stuck On Load". Lo que sucedía es que se podía crear una ventana de 1*1 pixeles, por la cual los intrusos podían seguir extrayendo información sin que el usuario se enterase y aún cuando éste hubiese salido de la página, ya que esta ventana (un simple punto en la pantalla) era imperceptible para el usuario.
Ataques Mediante ActiveX
ActiveX es una de las tecnologías más potentes que ha desarrollado Microsoft(r). Mediante ActiveX es posible reutilizar código, descargar código totalmente funcional de un sitio remoto, etc. Esta tecnología es considerada la respuesta de Microsoft(r) a Java. ActiveX soluciona los problemas de seguridad mediante certificados y firmas digitales. Una Autoridad Certificadora (AC) expende un certificado que acompaña a los controles activos y a una firma digital del programador. Cuando un usuario descarga una página con un control, se le preguntará si confía en la AC que expendió el certificado y/o en el control ActiveX. Si el usuario acepta el control, éste puede pasar a ejecutarse sin ningún tipo de restricciones (sólo las propias que tenga el usuario en el sistema operativo). Es decir, la responsabilidad de la seguridad del sistema se deja en manos del usuario, ya sea este un experto cibernauta consciente de los riesgos que puede acarrear la acción o un perfecto novato en la materia.
Esta última características es el mayor punto débil de los controles ActiveX ya que la mayoría de los usuarios aceptan el certificado sin siquiera leerlo, pudiendo ser esta la fuente de un ataque con un control dañino.
La filosofía ActiveX es que las Autoridades de Certificación se fían de la palabra del programador del control. Es decir, el programador se compromete a firmar un documento que asegura que el control no es nocivo. Evidentemente siempre hay programadores con pocos escrúpulos o con ganas de experimentar. Así, un conocido grupo de hackers alemanes, desarrolló un control ActiveX maligno que modificaba el programa de Gestión Bancaria Personal Quicken95(c) de tal manera que si un usuario aceptaba el control, éste realizaba la tarea que supuestamente tenía que hacer y además modificaba el Quicken, para que la próxima vez que la víctima se conectara a su banco, se iniciara automáticamente una transferencia a una cuenta del grupo alemán.
Otro control ActiveX muy especialmente "malévolo" es aquel que manipula el código de ciertos exploradores, para que éste no solicite confirmación al usuario a la hora de descargar otro control activo de la Web. Es decir, deja totalmente descubierto a ataques con tecnología ActiveX el sistema de la víctima. La autentificación de usuarios mediante Certificados y las Autoridades Certificadoras será abordada con profundidad en capítulos posteriores.
Ataques por Vulnerabilidades en los Navegadores
Generalmente los navegadores no fallan por fallos intrínsecos, sino que fallan las tecnologías que implementan, aunque en este punto analizaremos realmente fallos intrínsecos de los navegadores, como pueden ser los "Buffer Overflow". Los "Buffer Overflows" consisten en explotar una debilidad relacionada con los buffers que la aplicación usa para almacenar las entradas de usuario. Por ejemplo, cuando el usuario escribe una dirección en formato URL ésta se guarda en un buffer para luego procesarla. Si no se realizan las oportunas operaciones de comprobación, un usuario podría manipular estas direcciones.
Los protocolo usado pueden ser HTTP, pero también otros menos conocidos, internos de cada explorador, como el "res:" o el "mk:". Precisamente existen fallos de seguridad del tipo "Buffer Overflow" en la implementación de estos dos protocolos. Para poder lanzar este tipo de ataques hay que tener un buen conocimiento de lenguaje Assembler y de la estructura interna de la memoria del Sistema Operativo utilizado. También se puede citar el fallo de seguridad descubierto por Cybersnot Industries(r) relativo a los ficheros ".lnk" y ".url"de Windows 95(c) y NT(c) respectivamente. Algunas versiones de Microsoft Internet Explorer(c) podían ser utilizadas para ejecutar la aplicación que se deseara siempre que existiera en el ordenador de la víctima (por ejemplo el tan conocido y temido format.com).
Para más información relacionada con los ataques intrínsecos a los navegadores, se aconsejan las páginas no oficiales de seguridad tanto en Internet Explorer(c) como en Netscape Communicator(c).
EXPLOTACIÓN DE ERRORES DE DISEÑO, IMPLEMENTACIÓN Y OPERACIÓN
Muchos sistemas están expuestos a "agujeros" de seguridad que son explotados para acceder a archivos, obtener privilegios o realizar sabotaje. Estas vulnerabilidades ocurren por variadas razones, y miles de "puertas invisibles" son descubiertas (cada día) en sistemas operativos, aplicaciones de software, protocolos de red, browsers de Internet, correo electrónico y todas clase de servicios informático disponible.
Los Sistemas operativos abiertos (como Unix y Linux) tienen agujeros mas conocidos y controlados que aquellos que existen en sistemas operativos cerrados (como Windows(c)). La importancia (y ventaja) del código abierto radica en miles de usuarios analizan dicho código en busca de posibles bugs y ayudan a obtener soluciones en forma inmediata.
Constantemente encontramos en Internet avisos de nuevos descubrimientos de problemas de seguridad (y herramientas de Hacking que los explotan), por lo que hoy también se hace indispensable contar con productos que conocen esas debilidades, puedan diagnosticarlas y actualizar el programa afectado con el parche adecuado.
¿Qué es la Criptografía?
La criptografía (del griego κρύπτω krypto, «oculto», y γράφω graphos, «escribir», literalmente «escritura oculta») es el arte o ciencia de cifrar y descifrar información mediante técnicas especiales y se emplea frecuentemente para permitir un intercambio de mensajes que sólo puedan ser leído.
La palabra criptografía es un término genérico que describe todas las técnicas que permiten cifrar mensajes o hacerlos ininteligibles sin recurrir a una acción específica. El verbo asociado es cifrar.
La criptografía se basa en la aritmética: En el caso de un texto, consiste en transformar las letras que conforman el mensaje en una serie de números (en forma de bits ya que los equipos informáticos usan el sitema Binario) y luego realizar cálculos con estos números para:
* modificarlos y hacerlos incomprensibles. El resultado de esta modificación (el mensaje cifrado) se llama texto cifrado, en contraste con el mensaje inicial, llamado texto simple.
* asegurarse de que el receptor pueda descifrarlos.
El hecho de codificar un mensaje para que sea secreto se llama cifrado. El método inverso, que consiste en recuperar el mensaje original, se llama descifrado.
vocabulario del cifrado
El cifrado normalmente se realiza mediante una clave de cifrado y el descifrado requiere una clave de descifrado. Las claves generalmente se dividen en dos tipos:
* Las claves simétricas: son las claves que se usan tanto para el cifrado como para el descifrado. En este caso hablamos de cifrado simétrico o cifrado con clave secreta.
* Las claves asimétricas: son las claves que se usan en el caso del cifrado asimétrico (también llamado cifrado con clave pública). En este caso, se usa una clave para el cifrado y otra para el descifrado.
En inglés, el término decryption (descifrado) también se refiere al acto de intentar descifrar en forma ilegítima el mensaje (ya conozca o no el atacante la clave de descifrado).
Cuando el atacante no conoce la clave de descifrado, hablamos de criptanálisis o criptoanálisis (también se usa el término decodificación).
La criptología es la ciencia que estudia los aspectos científicos de estas técnicas, es decir, combina la criptografía y el criptoanálisis.
Breve historia de la criptografía
La criptografía es tan antigua como la escritura: siempre que ha habido comunicación entre dos personas, o grupos de personas, ha habido un tercero que podía estar interesado en interceptar y leer esa información sin permiso de los otros. Además, siempre que alguien esconde algo, hay personas interesadas en descubrirlo, así que ligado a la ciencia de esconder (la criptografía), se encuentra casi siempre la de descifrar (el criptoanálisis).
El primer cifrado que puede considerarse como tal (por tener evidencias no sólo del cifrado, sino también una metodología e instrucciones para llevarlo a cabo) se debe a Julio César: su método consistía en sustituir cada letra de un mensaje por su tercera siguiente en el alfabeto. Parece ser que también los griegos y egipcios utilizaban sistemas similares. Civilizaciones anteriores, como la Mesopotamia, India y China también utilizaban sus propios métodos.
Estos sistemas tan simples evolucionaron posteriormente a elegir una reordenación cualquiera (una permutación) del alfabeto, de forma que a cada letra se le hace corresponder otra, ya sin ningún patrón determinado (ss. XV-XVI).
Durante la I Guerra Mundial se utilizaron extensivamente las técnicas criptográficas, con no muy buen resultado, lo que impulsó al final de la guerra, el desarrollo de las primeras tecnologías electromecánicas. Un ejemplo de estos desarrollos es la máquina Enigma, utilizada por los alemanes para cifrar y descifrar sus mensajes.
Todos los métodos comentados anteriormente pueden ser más o menos seguros, dependiendo de la complejidad del sistema, del tiempo y la información adicional de que disponga el atacante; en cualquier caso, todavía tienen los siguientes inconvenientes:
* Solamente dan cuenta del problema de la confidencialidad (primer punto de los comentados anteriormente): sirven para dificultar las escuchas, pero no sirven para afrontar ninguno de los otros tres problemas reseñados.
* Hacen falta dos claves por persona con la que nos queremos comunicar (la que nos dé él, y la que usamos para él).
* Para intercambiar las claves, es preciso un contacto personal, o bien, una comunicación a través de un medio seguro y no interceptable.
Como ventajas, cabe destacar su simplicidad y rapidez, que la hace fácil de usar en muchos contextos.
Afortunadamente, la criptografía actual tiene resueltos estos problemas, mediante la codificación basada en sistemas de clave pública. Cada persona tiene dos claves: una privada (esto es, sólo la conoce y maneja él) y una pública (esto es, accesible por quien la solicite). Estas claves (junto con el sistema de cifrado) satisfacen la siguiente propiedad: lo que se codifica utilizando una de ellas, se decodifica con la otra, de manera que utilizando las dos de modo consecutivo obtenemos el mensaje original.
* Confidencialidad Cuando queremos enviar un mensaje a una persona, lo codificamos con su clave pública. De esta forma sólo él puede descifrarlo, utilizando su clave privada.
* Autenticidad Sólo nosotros podemos codificar el mensaje con nuestra clave privada, y cualquiera puede leerlo con la pública. Esto sirve para garantizar el origen del mensaje. Habitualmente, en lugar de cifrar el texto del mensaje completo, se extrae un resumen del texto (mediante su adecuada transformación: nótese que no sirve cualquier resumen puesto que para mensajes diferentes deberíamos poder obtener resúmenes diferentes que imposibiliten la confusión) y es este resumen lo que se codifica y adjunta al final del mensaje. En este caso hablamos de firma digital.
* Integridad Si la forma de obtener el resumen del punto anterior es correcta, dos mensajes diferentes tendrán resúmenes diferentes. En consecuencia, un mensaje modificado tendría un resumen diferente del original.
* No repudio Cuando el mensaje lleva nuestra firma, o está cifrado con nuestra clave privada, sólo podemos haberlo generado nosotros.
Ahora, según el nivel de seguridad que necesitemos, podemos utilizar:
* La clave pública del receptor.
* Nuestra clave privada.
* Ambas.
Nótese que con este cifrado en dos partes, el secreto lo proporciona la clave del receptor (sólo él puede descifrarlo) y la autenticidad del mensaje la proporciona mi clave (sólo yo tengo mi clave privada). Las características más relevantes de este sistema son:
* La parte pública de mi clave es conocida por todo el mundo.
* La parte privada de mi clave no es transmitida por ningún medio, siendo mucho más sencillo conservarla secreta.
* El uso de la clave pública del receptor garantiza que sólo él podrá leerlo.
* El uso de mi clave privada garantiza que sólo yo he podido generarlo (salvo robo, claro).
* Para comunicarse con varias personas, sólo necesitamos una clave por cada una de ellas (la pública).
Como inconvenientes de este tipo de sistemas, podemos hablar de la lentitud (necesitan operaciones con números grandes, que son muy costosas), y la necesidad de autoridades de certificación, que acrediten cuál es la clave pública de una determinada persona o entidad.
Criptografía en las Redes
miércoles, 8 de diciembre de 2010
¿Que es un Backtrack?
BackTrack:
BackTrack es una distribución GNU/Linux en formato LiveCD pensada y diseñada para la auditoría de seguridad y relacionada con la seguridad informática en general. Actualmente tiene una gran popularidad y aceptación en la comunidad que se mueve en torno a la seguridad informática.
Deriva de la unión de dos grandes distribuciones orientadas a la seguridad, el Auditor + WHAX.
WHAX es la evolución del Whoppix,(WhiteHat Knoppix) el cual pasó a basarse en SLAX en lugar de en Knoppix.
Incluye larga lista de herramientas de seguridad listas para usar, entre las que destacan numerosos scanners de puertos y vulnerabilidades, archivos de exploits, sniffers, herramientas de análisis forense y herramientas para la auditoría Wireless.
Fue incluida en la famosa lista Top 100 Network Security Tools del 2006 disponible en SecTools.Org
Web Oficial de BackTrack
Luego de tener claro las anteriores definiciones podemos entender que la finalidad de nuestro Laboratorio de Test de Penetración con BackTrack, será el ofrecer las técnicas, procesos y procedimientos necesarios para llevar a cabo un Test de Penetración haciendo uso de la Multi-Herramienta BackTrack.
Esto conllevará entonces a aprender y prácticar con ejemplos claros, sobre el uso de esta máginifica distribución. Además de las metodologías necesarias en un Test de Penetración.
BackTrack Linux es una de las más importantes distribuciones Linux enfocadas a la seguridad.
Con BackTrack Linux dispondrás de todas las herramientas necesarias para comprobar la seguridad de tus sistemas y equipos y obtener informes de los resultados.
Y aunque BackTrack Linux no está pensado para todos los públicos, su Web cuenta con tutoriales de instalación y configuración de este sistema operativo.
Pros
* Buena selección de paquetes
* Varios modos de arranque
* Bajo consumo de recursos
* LiveDVD e instalable en disco y USB
Contras
* No apta para todos los públicos
* Modo texto/consola por defecto
BackTrack es una distribución GNU/Linux en formato LiveCD pensada y diseñada para la auditoría de seguridad y relacionada con la seguridad informática en general. Actualmente tiene una gran popularidad y aceptación en la comunidad que se mueve en torno a la seguridad informática.
Deriva de la unión de dos grandes distribuciones orientadas a la seguridad, el Auditor + WHAX.
WHAX es la evolución del Whoppix,(WhiteHat Knoppix) el cual pasó a basarse en SLAX en lugar de en Knoppix.
Incluye larga lista de herramientas de seguridad listas para usar, entre las que destacan numerosos scanners de puertos y vulnerabilidades, archivos de exploits, sniffers, herramientas de análisis forense y herramientas para la auditoría Wireless.
Fue incluida en la famosa lista Top 100 Network Security Tools del 2006 disponible en SecTools.Org
Web Oficial de BackTrack
Luego de tener claro las anteriores definiciones podemos entender que la finalidad de nuestro Laboratorio de Test de Penetración con BackTrack, será el ofrecer las técnicas, procesos y procedimientos necesarios para llevar a cabo un Test de Penetración haciendo uso de la Multi-Herramienta BackTrack.
Esto conllevará entonces a aprender y prácticar con ejemplos claros, sobre el uso de esta máginifica distribución. Además de las metodologías necesarias en un Test de Penetración.
BackTrack Linux es una de las más importantes distribuciones Linux enfocadas a la seguridad.
Con BackTrack Linux dispondrás de todas las herramientas necesarias para comprobar la seguridad de tus sistemas y equipos y obtener informes de los resultados.
Y aunque BackTrack Linux no está pensado para todos los públicos, su Web cuenta con tutoriales de instalación y configuración de este sistema operativo.
Pros
* Buena selección de paquetes
* Varios modos de arranque
* Bajo consumo de recursos
* LiveDVD e instalable en disco y USB
Contras
* No apta para todos los públicos
* Modo texto/consola por defecto
Reglas de Seguridad
Más que hablar de la gran regla de la seguridad podemos hablar de una serie de estrategias que, aunque no definitivas de forma individual, en su conjunto pueden mantener nuestra red oculta o protegida de ojos ajenos.
Item Complejidad
1. Cambia la contraseña por defecto.............................. Baja
2. Usa encriptación WEP/WPA...................................... Alta
3. Cambia el SSID por defecto.................................... Baja
4. Desactiva el broadcasting SSID................................ Media
5. Activa el filtrado de direcciones MAC......................... Alta
6. Establece el nº máximo de dispositivos que pueden conectarse.. Media
7. Desactiva DHCP................................................ Alta
8. Desconecta el AP cuando no lo uses............................ Baja
9. Cambia las claves WEP regularmente............................ Media
segurar el Punto de Acceso:
1. Cambia la contraseña por defecto.
Todos los fabricantes establecen un password por defecto de acceso a la administración del Punto de Acceso.
Al usar un fabricante la misma contraseña para todos sus equipos, es fácil o posible que el observador la conozca.
Aumentar la seguridad de los datos transmitidos:
2. Usa encriptación WEP/WPA.
* Activa en el Punto de Acceso la encriptación WEP. Mejor de 128 bits que de 64 bits… cuanto mayor sea el número de bits mejor.
Los Puntos de Acceso más recientes permiten escribir una frase a partir de la cual se generan automáticamente las claves. Es importante que en esta frase intercales mayúsculas con minúsculas y números, evites utilizar palabras incluidas en el diccionario y secuencias contiguas en el teclado (como "qwerty", "fghjk" o "12345").
También tendrás que establecer en la configuración WEP la clave que se utilizará de las cuatro generadas (Key 1, Key 2, Key 3 o Key 4).
Después de configurar el AP tendrás que configurar los accesorios o dispositivos Wi-Fi de tu red. En éstos tendrás que marcar la misma clave WEP (posiblemente puedas utilizar la frase anterior) que has establecido para el AP y la misma clave a utilizar (Key 1, Key 2, Key 3 o Key 4).
* Algunos Puntos de Acceso más recientes soportan también encriptación WPA (Wi-Fi Protected Access), encriptación dinámica y más segura que WEP.
Si activas WPA en el Punto de Acceso, tanto los accesorios y dispositivos WLAN de tu red como tu sistema operativo deben soportarlo (Palm OS por el momento no y para Windows XP es necesario instalar una actualización).
Ocultar tu red Wi-Fi:
3. Cambia el SSID por defecto.
* Suele ser algo del estilo a "default", "wireless", "101", "linksys" o "SSID".
En vez de "MiAP", "APManolo" o el nombre de la empresa es preferible escoger algo menos atractivo para el observador, como puede ser "Broken", "Down" o "Desconectado".
Si no llamamos la atención de el observador hay menos posibilidades de que éste intente entrar en nuestra red.
4. Desactiva el broadcasting SSID.
* El broadcasting SSID permite que los nuevos equipos que quieran conectarse a la red Wi-Fi identifiquen automáticamente los datos de la red inalámbrica, evitando así la tarea de configuración manual.
Al desactivarlo tendrás que introducir manualmente el SSID en la configuración de cada nuevo equipo que quieras conectar.
Evitar que se conecten:
5. Activa el filtrado de direcciones MAC.
* Activa en el AP el filtrado de direcciones MAC de los dispositivos Wi-Fi que actualmente tengas funcionando. Al activar el filtrado MAC dejarás que sólo los dispositivos con las direcciones MAC especificadas se conecten a tu red Wi-Fi.
6. Establece el número máximo de dispositivos que pueden conectarse.
* Si el AP lo permite, establece el número máximo de dispositivos que pueden conectarse al mismo tiempo al Punto de Acceso.
7. Desactiva DHCP.
* Desactiva DHCP en el router ADSL y en el AP.
En la configuración de los dispositivos/accesorios Wi-Fi tendrás que introducir a mano la dirección IP, la puerta de enlace, la máscara de subred y el DNS primario y secundario.
Para los más cautelosos:
8. Desconecta el AP cuando no lo uses.
* Desconecta el Punto de Acceso de la alimentación cuando no lo estés usando o no vayas a hacerlo durante una temporada. El AP almacena la configuración y no necesitarás introducirla de nuevo cada vez que lo conectes.
9. Cambia las claves WEP regularmente.
* Por ejemplo semanalmente o cada 2 ó 3 semanas.
Antes decíamos que existen aplicaciones capaces de obtener la clave WEP de nuestra red Wi-Fi analizando los datos transmitidos por la misma. Pueden ser necesarios entre 1 y 4 Gb de datos para romper una clave WEP, dependiendo de la complejidad de las claves.
Cuando lleguemos a este caudal de información transmitida es recomendable cambiar las claves.
Recuerda que tendrás que poner la misma clave WEP en el Punto de Acceso y en los dispositivos que se vayan a conectar a éste.
Item Complejidad
1. Cambia la contraseña por defecto.............................. Baja
2. Usa encriptación WEP/WPA...................................... Alta
3. Cambia el SSID por defecto.................................... Baja
4. Desactiva el broadcasting SSID................................ Media
5. Activa el filtrado de direcciones MAC......................... Alta
6. Establece el nº máximo de dispositivos que pueden conectarse.. Media
7. Desactiva DHCP................................................ Alta
8. Desconecta el AP cuando no lo uses............................ Baja
9. Cambia las claves WEP regularmente............................ Media
segurar el Punto de Acceso:
1. Cambia la contraseña por defecto.
Todos los fabricantes establecen un password por defecto de acceso a la administración del Punto de Acceso.
Al usar un fabricante la misma contraseña para todos sus equipos, es fácil o posible que el observador la conozca.
Aumentar la seguridad de los datos transmitidos:
2. Usa encriptación WEP/WPA.
* Activa en el Punto de Acceso la encriptación WEP. Mejor de 128 bits que de 64 bits… cuanto mayor sea el número de bits mejor.
Los Puntos de Acceso más recientes permiten escribir una frase a partir de la cual se generan automáticamente las claves. Es importante que en esta frase intercales mayúsculas con minúsculas y números, evites utilizar palabras incluidas en el diccionario y secuencias contiguas en el teclado (como "qwerty", "fghjk" o "12345").
También tendrás que establecer en la configuración WEP la clave que se utilizará de las cuatro generadas (Key 1, Key 2, Key 3 o Key 4).
Después de configurar el AP tendrás que configurar los accesorios o dispositivos Wi-Fi de tu red. En éstos tendrás que marcar la misma clave WEP (posiblemente puedas utilizar la frase anterior) que has establecido para el AP y la misma clave a utilizar (Key 1, Key 2, Key 3 o Key 4).
* Algunos Puntos de Acceso más recientes soportan también encriptación WPA (Wi-Fi Protected Access), encriptación dinámica y más segura que WEP.
Si activas WPA en el Punto de Acceso, tanto los accesorios y dispositivos WLAN de tu red como tu sistema operativo deben soportarlo (Palm OS por el momento no y para Windows XP es necesario instalar una actualización).
Ocultar tu red Wi-Fi:
3. Cambia el SSID por defecto.
* Suele ser algo del estilo a "default", "wireless", "101", "linksys" o "SSID".
En vez de "MiAP", "APManolo" o el nombre de la empresa es preferible escoger algo menos atractivo para el observador, como puede ser "Broken", "Down" o "Desconectado".
Si no llamamos la atención de el observador hay menos posibilidades de que éste intente entrar en nuestra red.
4. Desactiva el broadcasting SSID.
* El broadcasting SSID permite que los nuevos equipos que quieran conectarse a la red Wi-Fi identifiquen automáticamente los datos de la red inalámbrica, evitando así la tarea de configuración manual.
Al desactivarlo tendrás que introducir manualmente el SSID en la configuración de cada nuevo equipo que quieras conectar.
Evitar que se conecten:
5. Activa el filtrado de direcciones MAC.
* Activa en el AP el filtrado de direcciones MAC de los dispositivos Wi-Fi que actualmente tengas funcionando. Al activar el filtrado MAC dejarás que sólo los dispositivos con las direcciones MAC especificadas se conecten a tu red Wi-Fi.
6. Establece el número máximo de dispositivos que pueden conectarse.
* Si el AP lo permite, establece el número máximo de dispositivos que pueden conectarse al mismo tiempo al Punto de Acceso.
7. Desactiva DHCP.
* Desactiva DHCP en el router ADSL y en el AP.
En la configuración de los dispositivos/accesorios Wi-Fi tendrás que introducir a mano la dirección IP, la puerta de enlace, la máscara de subred y el DNS primario y secundario.
Para los más cautelosos:
8. Desconecta el AP cuando no lo uses.
* Desconecta el Punto de Acceso de la alimentación cuando no lo estés usando o no vayas a hacerlo durante una temporada. El AP almacena la configuración y no necesitarás introducirla de nuevo cada vez que lo conectes.
9. Cambia las claves WEP regularmente.
* Por ejemplo semanalmente o cada 2 ó 3 semanas.
Antes decíamos que existen aplicaciones capaces de obtener la clave WEP de nuestra red Wi-Fi analizando los datos transmitidos por la misma. Pueden ser necesarios entre 1 y 4 Gb de datos para romper una clave WEP, dependiendo de la complejidad de las claves.
Cuando lleguemos a este caudal de información transmitida es recomendable cambiar las claves.
Recuerda que tendrás que poner la misma clave WEP en el Punto de Acceso y en los dispositivos que se vayan a conectar a éste.
Encriptar cadenas de texto
Uno de los problemas clásicos con los que nos enfrentamos los programadores es el de encriptar los datos. La cantidad de situaciones en las que necesitamos encriptar los datos es incontable.
Normalmente los datos se almacenan en una base de datos, y esta suele ser segura, pero las claves de conexión se encuentran en archivos de texto planos, XML ... Incluso hay muchas bases de datos en las que la información de las claves con las que los usuarios se conectan a los sistemas corporativos estan sin encriptar, con lo que además podemos llegar a comprometer la seguridad de todo nuestro sistema.
Existen complejos algoritmos que permiten la encriptación de datos y que garantizan matemáticamente que nadie los puede desencriptar, como es el caso de MD5, utilizado para emitir certificados de seguridad en sistemas SSL. Tambien existen componentes de software que realizan el trabajo de encriptación por nosotros.
Estas soluciones tienen su parte negativa, por un lado los algoritmos seguros no se pueden desencriptar, por lo que no siempre son utiles. Por otro lado los componentes de software desarrollados por compañias pueden llegar a ser muy caros y además es necesario instalarlos en el los servidores, cosa que no siempre es posible.
La solución son los sistemas de clave pública-privada. Son sistemas en los que la encriptación se basa en un par de claves, con una clave se encriptan los datos y sólo se pueden desencriptar si se conoce la otra.
Nuestra clase esta basada en esta idea. Vamos a desarrollar una clase que escripta cadena basandose en un patrones. La clase está escrita en VB.NET, pero al utilizar unicamente tipos comunes podemos exportarla facimente a cualquier otro lenguaje.
Lo primero que vamos a hacer es crear la clase a la que vamos a llamar Encriptador.
Public Class Encriptador
End Class
La idea de esta clase es definir dos patrones, cada uno con todos los caracteres del idioma, de la A-Z en mayúscula y minuscula, los numeros ... y cada uno en un orden diferente y aleatorio. Después aplicaremos un sencillo algoritmo que nos haga correcponder cada elemento de un patrón con otro.
Lo primero que necesitamos definir los patrones,para ello tecleamos el abecedario y los números en una cadena de texto como esta:
ABCDEFGHIJKLMNÑOPQRSTVWXYZabcdefghijklmnñopqrstvwxyz1234567890
Y ahora la desordenamos hasta que quede ilegible. Asignamos estas cadenas a nuestras cadena de patrón. Definimos las cadenas a nivel de instancia.
Tambien declaramos dos métodos, uno para encriptar la cadena y otro para encriptar una única letra, que además recibe otros dos parámetros, uno denominado variable, que representa la longitud de la cadena a encriptar y otro a_indice, que representa el índice del caracter dentro de la cadena. Con ellas construiremos un sencillo algoritmo, que evitará que alguien pueda establecer una relación del tipo de "la a es la j encriptada" y que hará que cada letra se encripte de modo diferente dependiendo de la longitud de la cadena y de donde esté situada dentro de ella.
Public Class Encriptador
Private patron_busqueda As String = "0ABIZ2ÑebDNOEcwGl6oSñixq1..."
Private Patron_encripta As String = "vQÑO8dk1VgIPZxAR3UsLD6XBz..."
'Los patrones están aquí sin terminar por falta de espacio.
Public Function EncriptarCadena (ByVal cadena As String) As String
End Function
Private Function EncriptarCaracter (ByVal caracter As String, _
ByVal variable As Integer, _
ByVal a_indice As Integer) As String
End Function
End Class
Ahora escribimos el código para EncriptarCadena, que sencillamente recorre la cadena letra a letra invocando al método de encriptar caracter, pasandole como parémetros el caracter, la longitud de la cadena y el índice de la iteración. El código es muy sencillo.
Public Function EncriptarCadena (ByVal cadena As String) As String
Dim idx As Integer
Dim result As String
For idx = 0 To cadena.Length - 1
result += EncriptarCaracter(cadena.Substring(idx, 1), cadena.Length, idx)
Next
Return result
End Function
Ahora tenemos que escribir el método EncriptarCaracter, como hemos visto al declarar el método, recibe tres parámetros, el caracter que queremos encriptar, un entero variable (que será la longitud de la cadena a encriptar) y el indice que ocupa el caracter a encriptar dentro de la cadena que queremos encriptar. Esto nos va a permitir escribir un sencillo algoritmo para devolver el índice que le va a corresponder a nuestro caracter dentro del patron encriptado.
Private Function EncriptarCaracter (ByVal caracter As String, _
ByVal variable As Integer, _
ByVal a_indice As Integer) As String
Dim caracterEncriptado As String, indice As Integer
If patron_busqueda.IndexOf(caracter) <> -1 Then
indice = (patron_busqueda.IndexOf(caracter) + variable + a_indice) Mod patron_busqueda.Length
Return Patron_encripta.Substring(indice, 1)
End If
Return caracter
End Function
Normalmente los datos se almacenan en una base de datos, y esta suele ser segura, pero las claves de conexión se encuentran en archivos de texto planos, XML ... Incluso hay muchas bases de datos en las que la información de las claves con las que los usuarios se conectan a los sistemas corporativos estan sin encriptar, con lo que además podemos llegar a comprometer la seguridad de todo nuestro sistema.
Existen complejos algoritmos que permiten la encriptación de datos y que garantizan matemáticamente que nadie los puede desencriptar, como es el caso de MD5, utilizado para emitir certificados de seguridad en sistemas SSL. Tambien existen componentes de software que realizan el trabajo de encriptación por nosotros.
Estas soluciones tienen su parte negativa, por un lado los algoritmos seguros no se pueden desencriptar, por lo que no siempre son utiles. Por otro lado los componentes de software desarrollados por compañias pueden llegar a ser muy caros y además es necesario instalarlos en el los servidores, cosa que no siempre es posible.
La solución son los sistemas de clave pública-privada. Son sistemas en los que la encriptación se basa en un par de claves, con una clave se encriptan los datos y sólo se pueden desencriptar si se conoce la otra.
Nuestra clase esta basada en esta idea. Vamos a desarrollar una clase que escripta cadena basandose en un patrones. La clase está escrita en VB.NET, pero al utilizar unicamente tipos comunes podemos exportarla facimente a cualquier otro lenguaje.
Lo primero que vamos a hacer es crear la clase a la que vamos a llamar Encriptador.
Public Class Encriptador
End Class
La idea de esta clase es definir dos patrones, cada uno con todos los caracteres del idioma, de la A-Z en mayúscula y minuscula, los numeros ... y cada uno en un orden diferente y aleatorio. Después aplicaremos un sencillo algoritmo que nos haga correcponder cada elemento de un patrón con otro.
Lo primero que necesitamos definir los patrones,para ello tecleamos el abecedario y los números en una cadena de texto como esta:
ABCDEFGHIJKLMNÑOPQRSTVWXYZabcdefghijklmnñopqrstvwxyz1234567890
Y ahora la desordenamos hasta que quede ilegible. Asignamos estas cadenas a nuestras cadena de patrón. Definimos las cadenas a nivel de instancia.
Tambien declaramos dos métodos, uno para encriptar la cadena y otro para encriptar una única letra, que además recibe otros dos parámetros, uno denominado variable, que representa la longitud de la cadena a encriptar y otro a_indice, que representa el índice del caracter dentro de la cadena. Con ellas construiremos un sencillo algoritmo, que evitará que alguien pueda establecer una relación del tipo de "la a es la j encriptada" y que hará que cada letra se encripte de modo diferente dependiendo de la longitud de la cadena y de donde esté situada dentro de ella.
Public Class Encriptador
Private patron_busqueda As String = "0ABIZ2ÑebDNOEcwGl6oSñixq1..."
Private Patron_encripta As String = "vQÑO8dk1VgIPZxAR3UsLD6XBz..."
'Los patrones están aquí sin terminar por falta de espacio.
Public Function EncriptarCadena (ByVal cadena As String) As String
End Function
Private Function EncriptarCaracter (ByVal caracter As String, _
ByVal variable As Integer, _
ByVal a_indice As Integer) As String
End Function
End Class
Ahora escribimos el código para EncriptarCadena, que sencillamente recorre la cadena letra a letra invocando al método de encriptar caracter, pasandole como parémetros el caracter, la longitud de la cadena y el índice de la iteración. El código es muy sencillo.
Public Function EncriptarCadena (ByVal cadena As String) As String
Dim idx As Integer
Dim result As String
For idx = 0 To cadena.Length - 1
result += EncriptarCaracter(cadena.Substring(idx, 1), cadena.Length, idx)
Next
Return result
End Function
Ahora tenemos que escribir el método EncriptarCaracter, como hemos visto al declarar el método, recibe tres parámetros, el caracter que queremos encriptar, un entero variable (que será la longitud de la cadena a encriptar) y el indice que ocupa el caracter a encriptar dentro de la cadena que queremos encriptar. Esto nos va a permitir escribir un sencillo algoritmo para devolver el índice que le va a corresponder a nuestro caracter dentro del patron encriptado.
Private Function EncriptarCaracter (ByVal caracter As String, _
ByVal variable As Integer, _
ByVal a_indice As Integer) As String
Dim caracterEncriptado As String, indice As Integer
If patron_busqueda.IndexOf(caracter) <> -1 Then
indice = (patron_busqueda.IndexOf(caracter) + variable + a_indice) Mod patron_busqueda.Length
Return Patron_encripta.Substring(indice, 1)
End If
Return caracter
End Function
Criptografía
Las civilizaciones mas antiguas (egipcia, mesopotámica, china..) ya usaban esos métodos.Uno de los primeros métodos de encriptado que está documentado es atribuido a Julio Cesar, que se basaba en la sustitución de las letras de un documento por la tercera letra que le correspondiese en el alfabeto. Así la A se convertía en una D, la B en E ...
Con el tiempo y debido principalmente a su uso militar, los sistemas criptográfícos fueron avanzando en complejidad, hasta llegar a nuestros días donde la informática ha entrado en nuestras vidas y la necesidad de seguridad al realizar nuestras operaciones aumenta.
En la actualidad, en la vida real, estamos acostumbrados a enviar o recibir cartas postales que vienen encerradas en un sobre para que su lectura esté reservada solo a nosotros o a su destinatario. En el mundo virtual, en el caso del e-mail esto no es así, ya que lo que enviamos es la carta sin el "sobre" que lo contenga, es decir, sin nada que impida su lectura por parte de cualquiera que pudiera interceptarla. ¿Queremos que nuestras confidencias, nuestros números de tarjeta de crédito, nuestros saldos en bancos, etc .. sean vistos por cualquiera?
Criptografía clásica (XI)
El método de Kasiski
El método de Kasiski fue introducido en 1863 por el oficial militar prusiano Friedrich W. Kasiski. Se trata de un método de criptoanális que analiza repeticiones en el texto cifrado para determinar el periodo que se usó para cifrarlo.
Por ejemplo, supongamos que el texto plano "Me siento como si cientos de ojos me observaran" es cifrado con el método de Vigenère usando la clave "ole" como se muestra a continuación:
Mensaje:
M E S I E N T O C O M O S I C I E N T O S D E O J O S M E O B S E R V A R A N
Clave:
O L E O L E O L E O L E O L E O L E O L E O L E O L E O L E O L E O L E O L E
Cifrado:
A O W W O Q I Z G D W S H S G W O Q I Z W R O S X Z W A O S P D I G G E G L Q
Cuando se encuentran n-gramas (palabras) repetidos en el texto cifrado con n >= 3, lo más probable es que esos n-gramas sean también iguales en el texto original. Esto implica que han sido cifrados con la misma sustitución, con lo que la distancia entre los comiezos de los n-gramas iguales será un múltiplo del periodo que se usó para cifrar el texto.
En nuestro ejemplo tenemos repetido el 5-grama "WOQIZ", a una distancia de 12 caracteres. Esto quiere decir que el periodo que se usó para cifrar el texto es divisor de 12, con lo que sólo puede ser d = 1, 2, 3, 4, 6 o 12. En nuestro ejemplo es 3. Parece que nos salen demasiadas posibilidades para el periodo pero debemos tener en cuenta que el texto que se ha elegido para el ejemplo es muy pequeño. En textos más grandes suelen encontrarse varias parejas de n-gramas repetidos con varias distancias que los separan. En estos casos el periodo que se tomó para cifrar el texto será un divisor común de todas las distancias que separen n-gramas iguales, con lo que las posibilidades se reducen bastante. En el criptoanálisis del método de Vigenère veremos un ejemplo en el que se aplica este método para descifrar un texto de periodo desconocido a priori.
Sustituciones Polialfabéticas
Por darthje
Los sistemas polialfabéticos también cambian símbolos del texto llano por otros símbolos para formar el texto cifrado. La diferencia con los sistemas monoalfabéticos es que no siempre se cambia un símbolo del texto llano por el mismo símbolo en el texto cifrado sino que el símbolo por el que se cambiará dependerá del símbolo que se va a sustituir y de la posición que ocupe.
Los cifrados polialfabéticos aplican varias sustituciones monoalfabéticas al texto llano. Según la posición del símbolo a cifrar le aplicarán una sustitución monoalfabética u otra...
Primero veremos los métodos generales y luego entraremos en algunos casos particulares tal y como se detalla a continuación:
* Descripción en el caso general
o Método de Kasiski
o Método del Índice de Coincidencia
* Casos particulares
o Criptosistema de Vigenere
o Cifrado de Beaufort
o Cifrado de llave continua
o Cifrados de Vernam y cuadernos de un sólo uso
Descripción en el caso general
Los cifrados polialfabéticos esconden la distribución usando sustituciones multiples, es decir, varios alfabetos. Los alfabetos no necesitan necesariamente ser de orígenes diferentes, por ejemplo, un alfabeto romano y otro cirílico. El simple hecho de alterar la orden en la secuencia de las letras ya caracteriza un "nuevo" alfabeto. Por ejemplo, z-y-x-...-c-b-a es un alfabeto de sustitución; b-a-d-c-... es un alfabeto de sustitución diferente. Si ambos fueran utilizados para cifrar un mismo mensaje, sustituyendo las letras originales, entonces se trata de una sustitución polialfabética.
Así, usando d alfabetos de cifrado (periódo d): C1, C2, ..., Cd y con alfabeto de texto llano A:
f sub i A -> C sub i; i = 1 ... d
Entonces el mensaje:
M = m sub 1 m sub 2 ... m sub d m sub d+1 ...
se convierte en:
E sub k(M) = f sub 1(m sub 1) f sub 2(m sub 2) ... f sub d(m sub d) f sub d+1(m sub d+1) ...
Si d = 1, obtenemos de nuevo los cifrados monoalfabéticos.
La forma más antigua de la cifra polialfabética fue desarrollada por Leon Battista Alberti en 1466. Su sistema consistía en escribir el texto cifrado en letras minúsculas y usar letras mayúsculas como símbolos, denominados indicadores, para indicar cuando la sustitución cambiaba. El alfabeto cifrante del Disco de Alberti era ordenado e incluía los dígitos de 1 la 4, usados para formar palabras-código de un pequeño vocabulario. Posteriormente, formas más modernas fueron desarrolladas, donde la sustitución era cambiada cada letra del texto claro.
Como funciona
La palabra criptología proviene de las palabras griegas Kryto y logos y siginifica estudio de lo oculto. Una rama de la criptología es la criptografía, que se ocupa del cifrado de mensajes. Esta se basa en que el emisor emite un mensaje en claro, que es tratado mediante un cifrador con la ayuda de una clave, para crear un texto cifrado. Este texto cifrado, por medio del canal de comunicación establecido, llega al descifrador que convierte el texto cifrado, apoyandose en otra clave, para obtener el texto en claro original. Las dos claves implicadas en el proceso de cifrado/descifrado pueden ser o no iguales dependiendo del sistema de cifrado utilizado.
Sistemas de cifrado
Sistemas de cifrado simétrico.
Los sistemas de cifrado simétrico son aquellos que utilizan la misma clave para cifrar y descrifrar 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 publica 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 numero 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 publica de 512 bits, se debe factorizar un numero compuesto de hasta 155 cifras decimales.
Sistemas de cifrado híbridos.
Es el sistema de cifrado que usa tanto los sistemas de clave simétrica como el de clave asimétrica. Funciona mediante el cifrado de clave pública para compartir una clave para el cifrado simetrico. En cada mensaje, la clave simétrica utilizada es diferente por lo que si un atacante pudiera descubrir la clave simétrica, solo le valdría para ese mensaje y no para los restantes.Tanto PGP como GnuPG usan sistemas de cifrado híbridos. La clave simétrica es cifrada con la clave pública, y el mensaje saliente es cifrado con la clave simétrica, todo combinado automáticamente en un sólo paquete. El destinatario usa su clave privada para descifrar la clave simétrica y acto seguido usa la clave simétrica para descifrar el mensaje.
Con el tiempo y debido principalmente a su uso militar, los sistemas criptográfícos fueron avanzando en complejidad, hasta llegar a nuestros días donde la informática ha entrado en nuestras vidas y la necesidad de seguridad al realizar nuestras operaciones aumenta.
En la actualidad, en la vida real, estamos acostumbrados a enviar o recibir cartas postales que vienen encerradas en un sobre para que su lectura esté reservada solo a nosotros o a su destinatario. En el mundo virtual, en el caso del e-mail esto no es así, ya que lo que enviamos es la carta sin el "sobre" que lo contenga, es decir, sin nada que impida su lectura por parte de cualquiera que pudiera interceptarla. ¿Queremos que nuestras confidencias, nuestros números de tarjeta de crédito, nuestros saldos en bancos, etc .. sean vistos por cualquiera?
Criptografía clásica (XI)
El método de Kasiski
El método de Kasiski fue introducido en 1863 por el oficial militar prusiano Friedrich W. Kasiski. Se trata de un método de criptoanális que analiza repeticiones en el texto cifrado para determinar el periodo que se usó para cifrarlo.
Por ejemplo, supongamos que el texto plano "Me siento como si cientos de ojos me observaran" es cifrado con el método de Vigenère usando la clave "ole" como se muestra a continuación:
Mensaje:
M E S I E N T O C O M O S I C I E N T O S D E O J O S M E O B S E R V A R A N
Clave:
O L E O L E O L E O L E O L E O L E O L E O L E O L E O L E O L E O L E O L E
Cifrado:
A O W W O Q I Z G D W S H S G W O Q I Z W R O S X Z W A O S P D I G G E G L Q
Cuando se encuentran n-gramas (palabras) repetidos en el texto cifrado con n >= 3, lo más probable es que esos n-gramas sean también iguales en el texto original. Esto implica que han sido cifrados con la misma sustitución, con lo que la distancia entre los comiezos de los n-gramas iguales será un múltiplo del periodo que se usó para cifrar el texto.
En nuestro ejemplo tenemos repetido el 5-grama "WOQIZ", a una distancia de 12 caracteres. Esto quiere decir que el periodo que se usó para cifrar el texto es divisor de 12, con lo que sólo puede ser d = 1, 2, 3, 4, 6 o 12. En nuestro ejemplo es 3. Parece que nos salen demasiadas posibilidades para el periodo pero debemos tener en cuenta que el texto que se ha elegido para el ejemplo es muy pequeño. En textos más grandes suelen encontrarse varias parejas de n-gramas repetidos con varias distancias que los separan. En estos casos el periodo que se tomó para cifrar el texto será un divisor común de todas las distancias que separen n-gramas iguales, con lo que las posibilidades se reducen bastante. En el criptoanálisis del método de Vigenère veremos un ejemplo en el que se aplica este método para descifrar un texto de periodo desconocido a priori.
Sustituciones Polialfabéticas
Por darthje
Los sistemas polialfabéticos también cambian símbolos del texto llano por otros símbolos para formar el texto cifrado. La diferencia con los sistemas monoalfabéticos es que no siempre se cambia un símbolo del texto llano por el mismo símbolo en el texto cifrado sino que el símbolo por el que se cambiará dependerá del símbolo que se va a sustituir y de la posición que ocupe.
Los cifrados polialfabéticos aplican varias sustituciones monoalfabéticas al texto llano. Según la posición del símbolo a cifrar le aplicarán una sustitución monoalfabética u otra...
Primero veremos los métodos generales y luego entraremos en algunos casos particulares tal y como se detalla a continuación:
* Descripción en el caso general
o Método de Kasiski
o Método del Índice de Coincidencia
* Casos particulares
o Criptosistema de Vigenere
o Cifrado de Beaufort
o Cifrado de llave continua
o Cifrados de Vernam y cuadernos de un sólo uso
Descripción en el caso general
Los cifrados polialfabéticos esconden la distribución usando sustituciones multiples, es decir, varios alfabetos. Los alfabetos no necesitan necesariamente ser de orígenes diferentes, por ejemplo, un alfabeto romano y otro cirílico. El simple hecho de alterar la orden en la secuencia de las letras ya caracteriza un "nuevo" alfabeto. Por ejemplo, z-y-x-...-c-b-a es un alfabeto de sustitución; b-a-d-c-... es un alfabeto de sustitución diferente. Si ambos fueran utilizados para cifrar un mismo mensaje, sustituyendo las letras originales, entonces se trata de una sustitución polialfabética.
Así, usando d alfabetos de cifrado (periódo d): C1, C2, ..., Cd y con alfabeto de texto llano A:
f sub i A -> C sub i; i = 1 ... d
Entonces el mensaje:
M = m sub 1 m sub 2 ... m sub d m sub d+1 ...
se convierte en:
E sub k(M) = f sub 1(m sub 1) f sub 2(m sub 2) ... f sub d(m sub d) f sub d+1(m sub d+1) ...
Si d = 1, obtenemos de nuevo los cifrados monoalfabéticos.
La forma más antigua de la cifra polialfabética fue desarrollada por Leon Battista Alberti en 1466. Su sistema consistía en escribir el texto cifrado en letras minúsculas y usar letras mayúsculas como símbolos, denominados indicadores, para indicar cuando la sustitución cambiaba. El alfabeto cifrante del Disco de Alberti era ordenado e incluía los dígitos de 1 la 4, usados para formar palabras-código de un pequeño vocabulario. Posteriormente, formas más modernas fueron desarrolladas, donde la sustitución era cambiada cada letra del texto claro.
Como funciona
La palabra criptología proviene de las palabras griegas Kryto y logos y siginifica estudio de lo oculto. Una rama de la criptología es la criptografía, que se ocupa del cifrado de mensajes. Esta se basa en que el emisor emite un mensaje en claro, que es tratado mediante un cifrador con la ayuda de una clave, para crear un texto cifrado. Este texto cifrado, por medio del canal de comunicación establecido, llega al descifrador que convierte el texto cifrado, apoyandose en otra clave, para obtener el texto en claro original. Las dos claves implicadas en el proceso de cifrado/descifrado pueden ser o no iguales dependiendo del sistema de cifrado utilizado.
Sistemas de cifrado
Sistemas de cifrado simétrico.
Los sistemas de cifrado simétrico son aquellos que utilizan la misma clave para cifrar y descrifrar 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 publica 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 numero 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 publica de 512 bits, se debe factorizar un numero compuesto de hasta 155 cifras decimales.
Sistemas de cifrado híbridos.
Es el sistema de cifrado que usa tanto los sistemas de clave simétrica como el de clave asimétrica. Funciona mediante el cifrado de clave pública para compartir una clave para el cifrado simetrico. En cada mensaje, la clave simétrica utilizada es diferente por lo que si un atacante pudiera descubrir la clave simétrica, solo le valdría para ese mensaje y no para los restantes.Tanto PGP como GnuPG usan sistemas de cifrado híbridos. La clave simétrica es cifrada con la clave pública, y el mensaje saliente es cifrado con la clave simétrica, todo combinado automáticamente en un sólo paquete. El destinatario usa su clave privada para descifrar la clave simétrica y acto seguido usa la clave simétrica para descifrar el mensaje.
Suscribirse a:
Entradas (Atom)