sábado, 19 de agosto de 2017

Esquema Cliente - Servidor

Esquema Cliente-Servidor

Introducción

El principal motivo de la evolución tecnológica que se ha dado en las últimas décadas es la necesidad de realizar los procesos de manera más ágil y eficiente, debido a la creciente presión y competencia entre los desarrolladores. En el contexto de la infraestructura de procesamiento de la información, las organizaciones requerían de una que pudiera proveer información adecuada, exacta y oportuna y proporcionar un mejor servicio a los clientes.

El modelo Cliente/Servidor reúne las características necesarias para proveer esta infraestructura, independientemente del tamaño y complejidad de las operaciones de las organizaciones y, consecuentemente desempeña un papel importante en este proceso de evolución.

Esquema Cliente-Servidor

Este modelo empezó a ser aceptado a finales de los 80’s. Su funcionamiento se basa en que se tiene una máquina cliente, que requiere un servicio de una máquina servidor, y éste realiza la función para la que está programado. Una computadora por sí sola puede ser ambos, cliente y servidor, dependiendo del software de configuración; sin embargo, desde el punto de vista lógico, el cliente y el servidor son dos objetos separados que se comunican a través de una red de comunicaciones.

Características

Protocolos asimétricos: se refiere a que hay una relación muchos a uno entre los clientes y un servidor. Los Clientes siempre inician un diálogo mediante la solicitud de un servicio y los Servidores esperan pasivamente por las solicitudes de los clientes.

Encapsulación de servicios: El servidor es un especialista, cuando se le entrega un mensaje solicitando un servicio, él determina cómo conseguir hacer el trabajo. Los servidores se pueden actualizar sin afectar a los clientes en tanto que la interfaz pública de mensajes que se utilice por ambos lados, permanezca sin cambiar.

Integridad: El código y los datos de un servidor se mantienen centralizados, lo que origina que el mantenimiento sea más barato y la protección de la integridad de datos compartidos. Al mismo tiempo, los clientes mantienen su independencia

Transparencia de localización: El software cliente/servidor (midleware) habitualmente oculta la localización de un servidor a los clientes mediante la redirección de servicios. Un programa puede actuar tanto como cliente, como servidor o como cliente y servidor simultáneamente.

Intercambios basados en mensajes: Los clientes y servidores son procesos débilmente acoplados que pueden intercambiar solicitudes de servicios y respuestas utilizando mensajes.

Modularidad: Diseño extensible: el diseño modular de una aplicación cliente/servidor permite que la aplicación sea tolerante a fallos.

Independencia de la plataforma: El software cliente/servidor “ideal” es independiente del hardware o sistemas operativos, permitiendo al programador mezclar plataformas de clientes y servidores.

Código reutilizable: La implementación de un servicio puede utilizarse en varios servidores.

Recusos compartidos: Un servidor puede proporcionar servicios a muchos clientes al mismo tiempo, y regular el acceso de éstos a un conjunto de recursos compartidos

Arquitectura

La arquitectura C/S es una forma de dividir y especializar programas y equipos de cómputo de forma que la tarea que cada uno de ellos realiza se efectúa con la mayor eficiencia posible y permita simplificar las actualizaciones y mantenimiento del sistema, lo que en computación distribuida afecta directamente el tráfico de la red, reduciéndolo grandemente.

2 niveles

Cliente: El cliente es el proceso que permite al usuario formular los requerimientos y pasarlos al servidor, se le conoce con el término front-end. Normalmente maneja todas las funciones relacionadas con la manipulación y despliegue de datos, por lo que están desarrollados sobre plataformas que permiten construir interfaces gráficas de usuario, además de acceder a los servicios distribuidos en cualquier parte de una red.

Servidor: Es el proceso encargado de atender a múltiples clientes que hacen peticiones de algún recurso administrado por él. Al proceso servidor se le conoce con el término back-end. Normalmente maneja todas las funciones relacionadas con los recursos de datos.

  • Lógica de la aplicación integrada.
  • 3 niveles

    Cliente.

    Servidor (servidor de datos).

    Middleware (servidor de aplicaciones): Es el módulo intermedio que actúa como conductor entre sistemas permitiendo a cualquier usuario comunicarse con varias fuentes de información que se encuentran conectadas en una red; es el intermediario entre el cliente y servidor que se ejecuta en ambas partes.

  • Lógica de la aplicación localizada en el nivel del medio, separada.
  • Las aplicaciones al nivel del servidor son descentralizadas de uno a otro, es decir, cada servidor se especializa en una determinada tarea.
  • Permite mayor grado de flexibilidad, mayor seguridad y mejor rendimiento con respecto a la arquitectura en 2 niveles.
  • Multinivel

  • El nivel medio se divide en distintos niveles.
  • Permite mayor flexibilidad y presenta escalabilidad con respecto a los otros modelos.
  • Conclusiones

    El modelo Cliente/Servidor presenta muchas ventajas, sobre todo en la arquitectura multinivel; mientras que sus desventajas se reducen a un costo elevado y la aparente debilidad del servidor, cosa que se contrarresta gracias a la tolerancia a fallas del modelo. Por estas razones, la arquitectura C/S ha adquirido popularidad, siendo ahora la nueva tendencia y superando a los modelos centralizados.

    Referencias

  • Kioskea. (2014). Redes - Arquitectura Cliente/Servidor en 3 niveles. Agosto 20, 2017, de CCM Benchmark Group Sitio web: http://es.ccm.net/contents/147-redes-arquitectura-cliente-servidor-en-3-niveles
  • Díaz, F. (2005). Sistemas Distribuidos. Agosto 20, 2017, de Universidad de Valladolid Sitio web: https://www.infor.uva.es/~fdiaz/sd/2005_06/index20060501.html
  • Márquez, B. & Zulaica J. (2004). Implementación de un reconocedor de voz gratuito a el sistema de ayuda a invidentes Dos-Vox en español. Agosto 20, 2017, de Universidad de las Américas Puebla Sitio web: http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/marquez_a_bm/
  • martes, 15 de agosto de 2017

    Seguridad Informática

    Seguridad informática

    Introducción

    A partir de los años 80 el uso del ordenador personal comienza a hacerse común, iniciando también la preocupación por la integridad de los datos almacenados. En los años 90s comienzan a aparecer los virus y gusanos y se toma conciencia del peligro, para finales de esta década, las amenazas empiezan a generalizarse. Y a partir del año 2000 los a acontecimientos fuerzan a que se tome muy en serio el tema de la seguridad informática.

    En la actualidad la información es el objeto de mayor valor para las empresas. El progreso de la informática y de las redes de comunicación ha derivado en que los objetos del mundo real estén representados por bits y bytes, que no por ser virtuales pierden su valor, e incluso en muchos casos, llegan a tener un valor superior. Por ello la seguridad informática es muy importante ya que afecta directamente a gobiernos, institutos, empresas e individuos.

    Definición de seguridad: “Viene del latín seguritas, se refiere a la cualidad de seguro, es decir, aquello que está exento de peligro, daño o riesgo. Algo seguro es algo cierto. La seguridad por lo tanto es una certeza”.

    Definición de informática: “Es el conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores”

    Seguridad informática

    "Conjunto de medidas de prevención, detección y corrección, orientadas a proteger la confidencialidad, la integridad y la disponibilidad de los recursos informáticos"(Pacheco, 2011).

    Amenazas

    Una amenaza representa la acción que tiende a causar un daño a los dispositivos o sistemas en donde se encuentra almacenada la información, atentando contra su confidencialidad, integridad y disponibilidad.

    Servicios de Seguridad

    Servicio de procesamiento o de comunicación proporcionado por un sistema para dar un tipo especial de protección a los recursos del sistema; los servicios de seguridad implementan políticas de seguridad y son implementados, a su vez, por mecanismos de seguridad.

    Clasificación

    Autentificación. La seguridad de que la entidad que se comunica es quien dice ser.

    Control de acceso. Prevención del uso no autorizado de una fuente.

    Confidencialidad de los datos. Capacidad del sistema para evitar que personas no autorizadas puedan acceder a la información almacenada en él.

    Integridad de los datos. Servicio de seguridad que garantiza que la información sea modificada, incluyendo su creación y borrado, sólo por el personal autorizado.

    No repudio. Sirve a los emisores o a los receptores para negar un mensaje transmitido. Por lo que cuando un mensaje es enviado, el receptor puede probar que el mensaje fue enviado por el presunto emisor. De manera similar, cuando un mensaje es recibido, el remitente puede probar que el mensaje fue recibido por el presunto receptor.

    Ataques y Mecanismos de Seguridad

    Mecanismos de Seguridad

    Mecanismo de Seguridad: Es una herramienta que se utiliza para fortalecer la confidencialidad, la integridad y/o la disponibilidad de un sistema informático. Existen muchos y variados. Su selección depende del tipo de sistema, de su función y de los factores de riesgo que lo amenazan.

    Clasificación

    Mecanismos preventivos: Actúan antes de que un hecho ocurra y su función es detener agentes no deseados.

    Mecanismos detectores: Actúan antes de que un hecho ocurra y su función es revelar la presencia de agentes no deseados en algún componente del sistema. Se caracterizan por enviar un aviso y registrar la incidencia.

    Mecanismos correctivos: Actúan luego de ocurrido el hecho y su función es corregir las consecuencias.

    Mecanismos específicos de seguridad

    Pueden ser incorporados en la capa de protocolo adecuada para proporcionar algunos de los servicios de seguridad OSI.

    Cifrado: uso de algoritmos matemáticos para transformar datos de una forma inteligible. La transformación y la posterior recuperación de los datos depende de un algoritmo y cero o más claves de cifrado.

    Firma digital: datos añadidos a, o una transformación criptográfica de, una unidad de datos que permite al receptor verificar la fuente y la integridad de la unidad de datos y protegerla de falsificación por parte del receptor.

    Control de acceso: una serie de mecanismos que refuerzan los derechos de acceso a los recursos.

    Integridad de los datos: una serie de mecanismos empleados para verificar la integridad de una unidad de datos o del flujo de unidades de datos.

    Intercambio de autenticación: mecanismo diseñado para comprobar la identidad de una entidad por medio del intercambio de información.

    Relleno del tráfico: la inserción de bits en espacios en un flujo de datos para frustrar los intentos de análisis de datos.

    Control de enrutamiento: selección de rutas físicamente seguras para determinados datos y cambios de enrutamiento.

    Notorización: uso de una tercera parte confiable para asegurar determinadas propiedades de un intercambio de datos.

    Mecanismos generales de seguridad

    Mecanimos que no son específicos de ninguna capa de protocolo o sistema de seguridad OSI en particular.

    Funcionalidad fiable. La que se considera correcta respecto a algunos criterios.

    Etiquetas de seguridad. La marca asociada a un recurso que designa los atributos de seguridad de ese recurso.

    Detección de acciones. Detección de acciones relacionadas con la seguridad.

    Informe para la auditoría de seguridad. Recopilación de datos para facilitar una auditoría de seguridad, que consiste en una revisión y un examen independientes de los informes y actividades del sistema.

    Recuperación de la seguridad. Maneja las peticiones de los mecanismos y lleva acabo acciones de recuperación.

    Ataques

    Ataque informático: Un asalto a la seguridad del sistema derivado de una amenaza inteligente.

    Clasificación

    Ataques Pasivos: Se dan en forma de escucha o de observación no autorizadas de las transmisiones. El objetivo es obtener información que se esté transmitiendo.

  • Obtención de contenido de mensajes: Se da al vulnerar la seguridad del sistema para obtener información importante
  • Análisis de tráfico: Estos ataques persiguen observar los datos y el tipo de tráfico transmitido a través de redes informáticas, utilizando para ello herramientas como los “sniffers”. Así, se conoce como “eavesdropping” a la interceptación del tráfico que circula por una red de forma pasiva, sin modificar su contenido.
  • Ataques Activos: Estos implican alguna modificación del flujo de datos o la creación de un flujo falso y se pueden dividir en cuatro categorías: suplantación de identidad, repetición, modificación de mensajes e interrupción de servicio.

    1. Suplantación de identidad: se produce cuando una entidad finge ser otra.
      • IP Spoofing (“enmascaramiento de la dirección IP”): en este un atacante consigue modificar la cabecera de los paquetes enviados a un determinado sistema informático para simular que proceden de un equipo distinto al que verdaderamente los ha originado.
      • DNS Spoofing: pretenden provocar un direccionamiento erróneo en los equipos afectados, debido a una traducción errónea de los nombres de dominio a direcciones IP, facilitando de este modo la redirección de los usuarios de los sistemas afectados hacia páginas Web falsas o bien la interceptación de sus mensajes de correo electrónico.
      • SMTP Spoofing: envío de mensajes con remitentes falsos (“masquerading”).
      • Captura de cuentas de usuario y contraseñas.
    2. Repetición: implica la captura pasiva de una unidad de datos y su retransmisión posterior para producir un efecto no autorizado.
    3. Modificación de mensajes: significa que una parte de un mensaje original es alterada, o que los mensajes se han retrasado o reordenado, para producir un efecto no autorizado
    4. Interrupción de servicio: impide el uso o la gestión normal de las utilidades de comunicación
    Ataque Mecanismo
    Obtención de contenido de mensajes
  • Cifrado
  • Integridad de los datos
  • Control de enrutamiento
  • Notorización
  • Análisis de tráfico
  • Relleno de tráfico
  • Suplantación de identidad
  • Firma digital
  • Intercambio de autenticación
  • Repetición de mensajes
  • Cifrado
  • Control de acceso
  • Control de enrutamiento
  • Notorización
  • Modificación de mensajes
  • Cifrado
  • Control de acceso
  • Integridad de los datos
  • Intercambio de autenticación
  • Control de enrutamiento
  • Notorización
  • Interrupción de servicio
  • Control de acceso
  • Conclusión

    A pesar de que no hay ninguna medida que pueda garantizar un ambiente libre de amenazas a la información y a quienes la requieren, es fundamental aplicar todas las medidas de seguridad y adoptar algún modelo de gestión adecuado que permita lograr niveles efectivos de protección.

    Con el desarrollo de la tecnología, siempre habrá una nueva manera de vulnerar los sistemas, por lo que es necesario prevenir tal situación protegiendo la información de la mejor manera posible con los recursos con los que se cuenta actualmente y, posteriormente, desarrollar más.

    Referencias

  • Pacheco, F. & Jara, H. (2011). Hacking desde Cero. Buenos Aires: USERS.
  • Portillo, S. (2012). Historia de la seguridad informatica. agosto 20, 2017, de Prezi Sitio web: https://prezi.com/vnbaj88nuq0p/historia-de-la-seguridad-informatica/
  • Reyes, M. (2011). Propuestas para impulsar la seguridad informática en materia de educación. Agosto 20, 2017, de UNAM Sitio web: http://www.ptolomeo.unam.mx:8080/xmlui/handle/132.248.52.100/217
  • Stallings, W. (2004). Fundamentos de Seguridad en Redes, Aplicaciones y Estándares. España: PEARSON EDUCACIÓN, S.A.
  • miércoles, 9 de agosto de 2017

    Sistemas Distribuidos

    Sistemas Distribuidos

    Introducción

    Los sistemas distribuidos suponen un paso más en la evolución de los sistemas informáticos, entendidos desde el punto de vista de las necesidades que las aplicaciones plantean y las posibilidades que la tecnología ofrece.
    Desde una perspectiva histórica se puede hablar de diferentes modelos que determinan la funcionalidad y la estructura de un sistema de cómputo (Lafuente, 2017), algunos destacables son:
    • Sistemas de lotes: Fueron los primeros sistemas operativos. Permitían procesar en diferido y secuencialmente datos suministrados en paquetes de tarjetas perforadas.
    • Sistemas centralizados de tiempo compartido. Se desarrollaron a mediados de los 60, con el objetivo de incrementar la eficiencia en el uso de la CPU y disminuir los tiempos de respuesta de los usuarios, que ya operaban interactivamente. Los recursos estaban centralizados y se accedía al sistema desde terminales.
    • Sistemas de teleproceso. El sistema central monopoliza la gestión de los recursos y terminales remotos acceden a un sistema central utilizando una infraestructura de red y un protocolo de comunicaciones normalmente de tipo propietario.
    • Sistemas personales. El objetivo de este tipo de sistemas era proporcionar un sistema dedicado para un único usuario, lo que fue posible gracias al desarrollo del microprocesador a comienzos de los 80.
    • Sistemas en red. Cuando el concepto de computador central desaparece, se habla ahora de un conjunto de computadores que se conectan entre sí utilizando una infraestructura de red. Una máquina que proporciona el acceso a un determinado recurso es el servidor de ese recurso. Los clientes, que pueden disponer de recursos locales, acceden a un recurso remoto mediante solicitud al servidor correspondiente. Gracias al desarrollo de protocolos comunes, como TCP/IP, es posible interconectar las máquinas independientemente de sus características y sistema operativo (interoperatividad), extendiendo el ámbito de estos sistemas a redes de área amplia y posibilitando el surgimiento de Internet.

    Sistemas Distribuidos

    La computación distribuida

    Antes de definir lo que es un Sistema Distribuido, debe tenerse una noción de lo que es la computación distribuida.
    El término se utiliza para referirse a cualquier sistema en el que múltiples agentes autónomos, cada uno con capacidades de cómputo individual, se comunican entre sí y afectan mutuamente su comportamiento. Los agentes, usualmente llamados procesadores, procesos o nodos, pueden ser desde computadoras completas hasta autómatas celulares con capacidad de cómputo y memoria muy limitados que se pueden comunicar mediante mensajes. Podemos decir entonces, que la Computación Distribuida se refiere a los servicios que provee un Sistema de Computación Distribuido(Turpo Aroquipa, 2017).

    Definición de Sistema Distribuido

    Para Coulouris un sistema distribuido es aquél que está compuesto por varias computadoras autónomas conectadas mediante una red de comunicaciones y equipadas con programas que les permitan coordinar sus actividades y compartir recursos (Coulouris,2001). Bal ofrece una definición muy similar: "Un sistema de computación distribuida está compuesto por varios procesadores autónomos que no comparten memoria principal, pero cooperan mediante el paso de mensajes sobre una red de comunicaciones".

    Características básicas de los sistemas distribuidos

    Una de las primeras caracterizaciones de un Sistema Distribuido fue realizada por Enslow, en 1978, quien le atribuye las siguientes propiedades:

    1. Está compuesto por varios recursos informáticos de propósito general, tanto físicos como lógicos, que pueden asignarse dinámicamente a tareas concretas.
    2. Estos recursos están distribuidos físicamente, y funcionan gracias a una red de comunicaciones.
    3. Hay un sistema operativo de alto nivel, que unifica e integra el control de los componentes.
    4. El hecho de la distribución es transparente, permitiendo que los servicios puedan ser solicitados especificando simplemente su nombre (no su localización).
    5. El funcionamiento de los recursos físicos y lógicos está caracterizado por una autonomía coordinada.

    A pesar de que la definición de Philip Enslow sigue siendo válida, Jochen Schröder les atribuyó, en 2003, sólo tres características básicas:

  • Existencia de varias computadoras. En general, cada una con su propio procesador, memoria local, subsistema de entrada/salida y quizás incluso memoria persistente.
  • Interconexión. Existen vías que permiten la comunicación entre las computadoras, a través de las cuales pueden transmitir información.
  • Estado compartido. Las computadoras cooperan para mantener algún tipo de estado compartido. El funcionamiento correcto del sistema se describirse como el mantenimiento de una serie de invariantes globales que requiere la coordinación de varias computadoras.
  • Sin embargo, un sistema distribuido cuenta con otras tres características fundamentales que veremos a continuación.

    Ausencia de reloj global

    La sincronización es un punto clave para los sistemas operativos distribuidos. En éstos, hay un reloj por cada ordenador del sistema, con lo que es fundamental una coordinación entre todos los relojes para mostrar una hora única. Los osciladores de cada ordenador son ligeramente diferentes, y como consecuencia todo los relojes sufren un desfase y deben ser sincronizados continuamente. La sincronización no es trivial, porque se realiza a través de mensajes por la red. Cuyo tiempo de envío puede ser variable y depender de muchos factores como la distancia, la velocidad de transmisión y la propia estructura de la red.
    La ausencia de reloj global se refiere a que las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, esta más bien distribuida a los componentes.

    Concurrencia de procesos

    Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red.

    Fallos independientes

    Cada componente del sistema puede fallar independientemente, con lo cual los demás pueden continuar ejecutando a sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando.

    Ejemplos

  • Skype. Un ejemplo de sistema distribuido podría ser esta plataforma de llamadas, ya que permite que más de dos personas se conecten en una videoconferencia, o que distintos usuarios realicen llamadas sin que esto afecte la estabilidad del servidor (concurrencia); los usuarios además pueden estar situados en cualquier ubicación geográfica y contactar con otros en tiempo real, sin necesidad de que las ubicaciones coincidan (ausencia de reloj global); por último, si la conexión de uno de los usuarios falla, esto no repercute en las actividades de ningún otro usuario (fallos independientes).
  • Conclusiones

    En conclusión, a pesar de todas las ventajas que tienen los sistemas distribuidos, implementarlos requiere un mayor conocimiento, ya que son más complejos y se utilizan más herramientas. Sin embargo, con el desarrollo de la tecnología, pronto será más fácil hacer uso de este tipo de sistema. Pero incluso ahora, su correcta implementación representa más ventajas que desventajas y es el sistema más viable en el caso de sistemas comerciales, comunicaciones, juegos multi usuario y otros sistemas que requieran de velocidad y regularidad de transferencia de una gran cantidad de datos.

    Referencias:

  • Alberto Lafuente. (2017). Introducción a los sistemas distribuidos . Agosto, 2017, de Universidad del País Vasco Sitio web: http://www.sc.ehu.es/acwlaroa/SDI/Apuntes/Cap1.pdf
  • Einar Turpo Aroquipa. (2017). Sistemas Distribuidos. Agosto, 2017, de Universidad Nacional del Altiplano Sitio web: http://www.unap.edu.pe/cidiomas/licing/pdf/sd.pdf
  • George Coulouris, Jean Dollimore, Tim Kindberg. (2001). Sistemas Distribuidos: conceptos y diseño. España: Pearson Educación.
  • Sistemas Heredados

    Conclusiones Los sistemas heredados pueden llegar a representar la base de la funcionalidad de una empresa, además de contener informa...