sábado, 28 de febrero de 2015

Proyecto Distribuido

Introducción
El proyecto que elaboré con mi equipo que está conformado por Emmanuel Estrada Barrientos, Samuel Rodríguez y por mí está distribuido ya que está en un servidor local, y de igual manera se puede distribuir de forma local en computadoras conectadas a una misma red.
Para poder decir que  lo escrito anteriormente es verdad, se deben de definir dos conceptos: qué es un sistema distribuido y qué es una red.

Desarrollo
Nuestro proyecto es un Sistema de Administración de Restaurante (SAR) en el cual se tienen 5 tipos de usuario: cliente, mesero, cajero, cocinero y gerente/administrador, donde cada uno de ellos tiene características que, al ejecutarse en la plataforma, hacen que sea distribuido. Se utilizan propiedades de Java en web, siendo estos sockets y JSPs para poder funcionar.

Para este semestre nuestro alcance fue de sólo dos módulos, siendo éstos inventario, ubicado en el  módulo del gerente/administrador y pedidos en el de mesero. En “inventario” se tienen las opciones de dar de alta productos, al igual que modificarlo y eliminarlo, quedando desplegados en la página principal todos los productos. En el módulo de “pedidos”, se tienen las opciones de ver todos los pedidos activos,  dar de alta nuevos, modificarlos y al entregar el pedido, darlo de baja.

El proyecto se puede distribuir localmente escribiendo en un navegador la IP de la máquina que está alojando el proyecto seguido del puerto y el nombre del proyecto.

Ahora, un sistema distribuido se define como un conjunto de computadoras conectadas a una misma red, capaces de realizar acciones independientes con el fin de dar un servicio mediante el intercambio y uso de información, y una red es un conjunto de dispositivos informáticos que se comunican entre sí por medios físicos intercambiando datos con el propósito de realizar una tarea.

Teniendo estas definiciones en cuenta, se puede decir que nuestro proyecto es distribuido porque:
Cada usuario puede ingresar a su respectivo módulo y ejecutar sus tareas en una computadora diferente dado que la plataforma está en un servidor local o distribuido localmente,  afirmando así que está distribuido porque cada uno de ellos realiza una acción independiente en coordinación con los demás intercambiando información entre ellos con el objetivo de dar un bien o un servicio,  ya que, por ejemplo, el gerente da de alta un producto y le asigna un stock  que se registra en la base de datos, y posteriormente el mesero hace una orden con ese producto ocupando una cierta cantidad de ellos, y el sistema automáticamente resta los productos ocupados en esa orden del stock actualizando la base de datos y  modificando también el estatus del producto de “Visible” cuando hay productos que se encuentran en desuso o reposo a “Oculto” cuando éste producto sea ocupado para algún pedido.  

Conclusión
Nuestro proyecto es distribuido ya que:
  1. Se puede ingresar al sistema desde cualquier computadora en un área pequeña si está distribuido de forma local, o desde cualquier otro dispositivo si se ocupa el servidor externo.
  2. El sistema actualiza la información editada por los usuarios de manera distribuida.
  3. Los usuarios trabajan de forma individual haciendo tareas independientes dentro del sistema para poder llegar a un fin común.
  4. Los usuarios utilizan información ingresada por otros usuarios en otros dispositivos  para así realizar su tarea.

WebSocket

Introducción
Un WebSocket se define como una API que permite que las páginas web se comuniquen por medio de dos vías con un host remoto. Está diseñado para ser implementado en navegadores y servidores web, pero puede utilizarse por cualquier aplicación cliente/servidor. Los WebSockets HTML5 proporcionan una enorme reducción en el tráfico innecesario en la red en comparación a una conexión full-duplex con dos conexiones. Una de las características más importantes que los WebSockets proporcionan es su capacidad para atravesar firewalls y servidores proxy, siendo estas últimas áreas una problemática para muchas aplicaciones. 


Desarrollo
Un WebSocket detecta la presencia de un servidor proxy y automáticamente establece un túnel para pasar por el proxy. El túnel se establece mediante la emisión de una sentencia CONNECT HTTP al servidor proxy, que solicita al servidor proxy abrir una conexión TCP / IP a un host y un puerto específico. Una vez que el túnel está configurado, la comunicación puede fluir sin obstáculos a través del proxy. Desde HTTPS funciona de una manera similar.



Los WebSockets están empezando a ser soportado por los navegadores modernos. Sin embargo, las implementaciones compatibles con versiones anteriores que permiten a los navegadores de hoy en día para tomar ventaja de esta tecnología emergente están disponibles.(Mozilla Firefox 8, Google Chrome 4 y Safari 5, así como la versión móvil de Safari en iOS 4.2.1 y en Internet Explorer 10).


Conclusión
Gracias a los Websockets ahora se tienen comunicaciones y envíos de mensajes de forma bidireccional con mucha mayor eficacia y velocidad en internet.

jueves, 26 de febrero de 2015

RMI

Introducción:
RMI (Remote Object Invocation) es una implementación orientada a objetos de llamada a procedimientos remotos exclusiva de Java. El servidor implementa una interfaz remota, un cliente accede mediante la invocación de sus métodos utilizando una sintaxis similar a la de los métodos locales.

Desarrollo:
La arquitectura de Java RMI utiliza módulos de software proxy para dar el soporte en tiempo de ejecución necesario para transformar la invocación del método remoto en una llamada a un método local y gestionar los detalles de la comunicación entre procesos subyacente. Cada extremo de la arquitectura, cliente y servidor, está formado por tres capas de abstracción:


  • Cliente
  1. Capa de resguardo. La invocación de un método remoto por parte de un proceso cliente, rirve para interceptar las invocaciones de los métodos remotos hechas por los programas clientes. Una vez interceptada la invocación es enviada a la siguiente capa:
  2. Capa de referencia remota. Interpreta y gestiona las referencias a los objetos de servicio remoto hechas por los clientes e invoca operaciones entre procesos de la siguiente capa:
  3. Capa de transporte. Se encarga de la conexión entre procesos, transmitiendo los datos que representan la llamada al método de la máquina remota.

  • Servidor
  1. Capa esqueleto. Se utiliza para interactuar con la capa de resguardo en la parte Cliente, lee los parámetros de invocación, realiza la llamada al objeto, acepta el valor de retorno y devuelve dicho valor al resguardo.
  2. Capa de referencia remota. Gestiona y transforma la referencia remota originada por el cliente en una referencia local.
  3. Capa de transporte. Se trata de una capa de transporte orientada a conexión, es decir, TCP en la arquitectura de red TCP/IP.

Arquitectura de Java RMI.



Interfaz de RMI.
Conclusión

RMI es una implementación para objetos distribuidos únicamente en Java que incluye 3 capas en cada parte, el cliente y el servidor, que se relacionan entre ellas para poder comunicarse y lograr su objetivo.

lunes, 23 de febrero de 2015

Niveles de Seguridad Informática y Kerberos

Niveles de Seguridad Informática
El estándar de niveles de seguridad más utilizado internacionalmente es el TCSEC Orange Book(2), desarrollado en 1983 de acuerdo a las normas de seguridad en computadoras del Departamento de Defensa de los Estados Unidos.
Los niveles describen diferentes tipos de seguridad del Sistema Operativo y se enumeran desde el mínimo grado de seguridad al máximo.
Estos niveles han sido la base de desarrollo de estándares europeos (ITSEC/ITSEM) y luego internacionales (ISO/IEC).
Cabe aclarar que cada nivel requiere todos los niveles definidos anteriormente: así el subnivel B2 abarca los subniveles B1, C2, C1 y el D.
·         Nivel D
Este nivel contiene sólo una división y está reservada para sistemas que han sido evaluados y no cumplen con ninguna especificación de seguridad.
Sin sistemas no confiables, no hay protección para el hardware, el sistema operativo es inestable y no hay autentificación con respecto a los usuarios y sus derechos en el acceso a la información.

·         Nivel C1: Protección Discrecional
Se requiere identificación de usuarios que permite el acceso a distinta información. Cada usuario puede manejar su información privada y se hace la distinción entre los usuarios y el administrador del sistema, quien tiene control total de acceso.
Muchas de las tareas cotidianas de administración del sistema sólo pueden ser realizadas por este "súper usuario" quien tiene gran responsabilidad en la seguridad del mismo. Con la actual descentralización de los sistemas de cómputos, no es raro que en una organización encontremos dos o tres personas cumpliendo este rol. Esto es un problema, pues no hay forma de distinguir entre los cambios que hizo cada usuario.
A continuación se enumeran los requerimientos mínimos que debe cumplir la clase C1: Acceso de control discrecional: distinción entre usuarios y recursos. Se podrán definir grupos de usuarios (con los mismos privilegios) y grupos de objetos (archivos, directorios, disco) sobre los cuales podrán actuar usuarios o grupos de ellos. Identificación y Autentificación: se requiere que un usuario se identifique antes de comenzar a ejecutar acciones sobre el sistema. El dato de un usuario no podrá ser accedido por un usuario sin autorización o identificación.

·         Nivel C2: Protección de Acceso Controlado
Este subnivel fue diseñado para solucionar las debilidades del C1. Cuenta con características adicionales que crean un ambiente de acceso controlado. Se debe llevar una auditoria de accesos e intentos fallidos de acceso a objetos. Tiene la capacidad de restringir aún más el que los usuarios ejecuten ciertos comandos o tengan acceso a ciertos archivos, permitir o denegar datos a usuarios en concreto, con base no sólo en los permisos, sino también en los niveles de autorización.
Requiere que se audite el sistema.  La auditoría requiere de autenticación adicional para estar seguros de que la persona que ejecuta el comando es quien dice ser.  Los usuarios de un sistema C2 tienen la autorización para realizar algunas tareas de administración del sistema sin necesidad de ser administradores. Permite llevar mejor cuenta de las tareas relacionadas con la administración del sistema, ya que es cada usuario quien ejecuta el trabajo y no el administrador del sistema.

·         Nivel B1: Seguridad Etiquetada
Este subnivel, es el primero de los tres con que cuenta el nivel B. Soporta seguridad multinivel, como la secreta y ultra secreta. Se establece que el dueño del archivo no puede modificar los permisos de un objeto que está bajo control de acceso obligatorio.
A cada objeto del sistema (usuario, dato, etc.) se le asigna una etiqueta, con un nivel de seguridad jerárquico (alto secreto, secreto, reservado, etc.) y con unas categorías (contabilidad, nóminas, ventas, etc.).
Cada usuario que accede a un objeto debe poseer un permiso expreso para hacerlo y viceversa. Es decir que cada usuario tiene sus objetos asociados.

·         Nivel B2: Protección Estructurada
Requiere que se etiquete cada objeto de nivel superior por ser padre de un objeto inferior.
La Protección Estructurada es la primera que empieza a referirse al problema de un objeto a un nivel más elevado de seguridad en comunicación con otro objeto a un nivel inferior.
El sistema es capaz de alertar a los usuarios si sus condiciones de accesibilidad y seguridad son modificadas; y el administrador es el encargado de fijar los canales de almacenamiento y ancho de banda a utilizar por los demás usuarios.


·         Nivel B3: Dominios de Seguridad
Refuerza a los dominios con la instalación de hardware: por ejemplo el hardware de administración de memoria se usa para proteger el dominio de seguridad de acceso no autorizado a la modificación de objetos de diferentes dominios de seguridad.
Todas las estructuras de seguridad deben ser lo suficientemente pequeñas como para permitir análisis y testeos ante posibles violaciones.
Este nivel requiere que la terminal del usuario se conecte al sistema por medio de una conexión segura. Además, cada usuario tiene asignado los lugares y objetos a los que puede acceder.


·         Nivel A: Protección Verificada
Es el nivel más elevado, incluye un proceso de diseño, control y verificación, mediante métodos formales (matemáticos) para asegurar todos los procesos que realiza un usuario sobre el sistema.
Para llegar a este nivel de seguridad, todos los componentes de los niveles inferiores deben incluirse. El diseño requiere ser verificado de forma matemática y también se deben realizar análisis de canales encubiertos y de distribución confiable. El software y el hardware son protegidos para evitar infiltraciones ante traslados o movimientos del equipamiento.


Kerberos
Kerberos es un protocolo de autenticación de red. Está diseñado para proporcionar autenticación fuerte para aplicaciones cliente / servidor mediante el uso de la criptografía de clave secreta,  que proporciona las herramientas de autenticación fuerte por la red para ayudar a proteger sistemas de información.
Kerberos se basa en criptografía de clave simétrica y requiere un tercero de confianza. Además, existen extensiones del protocolo para poder utilizar criptografía de clave asimétrica.


Su funcionamiento se resume en la lista siguiente:
  1. Un usuario ingresa su nombre de usuario y password en el cliente
  2. El cliente genera una clave hash a partir del password y la usará como la clave secreta del cliente.
  3. El cliente envía un mensaje en texto plano al AS solicitando servicio en nombre del usuario. Nota: ni la clave secreta ni el password son enviados, solo la petición del servicio.
  4. El AS comprueba si el cliente está en su base de datos. Si es así, el AS genera la clave secreta utilizando la función hash con la password del cliente encontrada en su base de datos. Entonces envía dos mensajes al cliente: Mensaje A: Client/TGS session key cifrada usando la clave secreta del usuario. Mensaje B: Ticket-Granting Ticket (que incluye el ID de cliente, la dirección de red del cliente, el período de validez y el Client/TGS session key) cifrado usando la clave secreta del TGS.
  5. Una vez que el cliente ha recibido los mensajes, descifra el mensaje A para obtener el client/TGS session key. Esta session key se usa para las posteriores comunicaciones con el TGS. (El cliente no puede descifrar el mensaje B pues para cifrar éste se ha usado la clave del TGS). En este momento el cliente ya se puede autenticar contra el TGS.
  6. Entonces el cliente envía los siguientes mensajes al TGS: Mensaje C: Compuesto del Ticket-Granting Ticket del mensaje B y el ID del servicio solicitado. Mensaje D: Autenticador (compuesto por el ID de cliente y una marca de tiempo), cifrado usando el client/TGS session key.
  7. Cuando recibe los mensajes anteriores, el TGS descifra el mensaje D (autenticador) usando el client/TGS session key y envía los siguientes mensajes al cliente: Mensaje E: Client-to-server ticket (que incluye el ID de cliente, la dirección de red del cliente, el período de validez y una Client/Server session key) cifrado usando la clave secreta del servicio. Mensaje F: Client/server session key cifrada usando el client/TGS session key.
  8. Cuando el cliente recibe los mensajes E y F, ya tiene suficiente información para autenticarse contra el SS. El cliente se conecta al SS y envía los siguientes mensajes: Mensaje E del paso anterior. Mensaje G: un nuevo Autenticador que incluye el ID de cliente, una marca de tiempo y que está cifrado usando el client/server session key.
  9. El SS descifra el ticket usando su propia clave secreta y envía el siguiente mensaje al cliente para confirmar su identidad: Mensaje H: la marca de tiempo encontrada en el último Autenticador recibido del cliente más uno, cifrado el client/server session key.
  10. El cliente descifra la confirmación usando el client/server session key y chequea si la marca de tiempo está correctamente actualizada. Si esto es así, el cliente confiará en el servidor y podrá comenzar a usar el servicio que este ofrece.
  11. El servidor provee del servicio al cliente.

lunes, 16 de febrero de 2015

Seguridad Web y Aplicaciones

HTTPS, Certificado de Seguridad, Firma Digital y Diferencias de Cifrado
HTTPS
Hypertext Transfer Protocol, más conocido por sus siglas HTTPS, es un protocolo de aplicación basado en el protocolo HTTP, destinado a la transferencia segura de datos de Hipertexto. Es utilizado principalmente por entidades bancarias, tiendas en línea, y cualquier tipo de servicio que requiera el envío de datos personales o contraseñas.
El sistema HTTPS utiliza un cifrado basado en SSL/TLS para crear un canal cifrado más apropiado para el tráfico de información sensible que el protocolo HTTP. De este modo se consigue que la información sensible (usuario y claves de paso normalmente) no pueda ser usada por un atacante que haya conseguido interceptar la transferencia de datos de la conexión, ya que lo único que obtendrá será un flujo de datos cifrados que le resultará imposible de descifrar.

Certificado de Seguridad
Los certificados de seguridad son una medida de confianza para las personas que visitan y hacen transacciones en una página web, que permite cifrar los datos entre el ordenador del cliente y el servidor que representa a la página. El significado más preciso de un certificado de seguridad es que con él logramos que los datos personales sean encriptados y así imposibilitar que sean interceptados por otro usuario.
Los certificados digitales son documentos digitales que verifican que tanto la "clave privada" como la "clave pública" utilizadas para autentificar al remitente y verificar la integridad de un mensaje transmitido son genuinas y aprobadas por una autoridad certificadora. 

Firma Digital
La firma digital es una herramienta tecnológica que permite garantizar la autoría e integridad de los documentos digitales, posibilitando que éstos gocen de una característica que únicamente era propia de los documentos en papel, de igual manera permite garantizar la identidad del firmante y la integridad del mensaje. La firma digital no implica asegurar la confidencialidad del mensaje; un documento firmado digitalmente puede ser visualizado por otras personas.
Garantizan la confidencialidad de la información transmitida mediante el empleo de un algoritmo para codificar el mensaje transmitido a través de redes informáticas. La firma digital se agrega al mensaje usando una "clave privada". El mensaje se transmite luego al receptor en una versión distorsionada, y el destinatario puede descifrar el mensaje recibido mediante el uso de una "clave pública" correspondiente que verifica la integridad de los mensajes recibidos y la identidad del remitente.

Diferencia entre certificado de seguridad y firma digital
La principal diferencia entre estos dos elementos de seguridad radica en la funcionalidad, ya que en la firma digital se comprueba la identidad del remitente, mientras que en el certificado de seguridad se certifica que los datos que se ingresen en una página web serán protegidos.

Diferencias entre cifrado simétrico y asimétrico
  • El cifrado simétrico utiliza la misma clave, y el asimétrico usa diferentes tipos de clave.
  • El cifrado simétrico usa el mismo algoritmo para cifrar y descifrar el mensaje, mientras que el asimétrico usa algoritmos distintos.
  • El cifrado asimétrico tiene la característica de dar autenticación.
  • En el cifrado simétrico la seguridad radica en la clave.

Diferencia entre autentificación y cifrado asimétrico
  • Dado que la autenticidad es una característica del cifrado asimétrico, se puede asegurar que el receptor tiene la certeza de que el emisor es quien dice ser.

jueves, 4 de septiembre de 2014

Modelo Cliente-Servidor y OSI de la ISO



Introducción

El modelo cliente-servidor es aquel donde 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.

Desarrollo
La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta.

Las características del cliente son:
  • Es activo, inicia el diálogo con el servidor
  • Por cada petición se debe obtener una respuesta
Las características del servidor son:
  • Es pasivo, espera las peticiones de los clientes
  • Cuando recibe peticiones, debe procesarlas y ofrecer una respuesta

Por otro lado, el modelo de referencia OSI (Open Systems Interconection) sirve para regular la comunicación entre  los sistemas heterogéneos y es así como surge en el año de 1983 como el resultado  del la ISO(International Organization of Standardization) para la estandarización internacional de los protocolos  de comunicación.

Este modelo se divide en 7 capas o niveles :




1.    Capa física
Es la que se encarga de la topología de la red y de las conexiones globales de la computadora hacia la red, tanto en lo que se refiere al medio físico como a la forma en la que se transmite la información.

2.    Capa de enlace de datos
Esta capa se ocupa del direccionamiento físico, del acceso al medio, de la detección de errores, de la distribución ordenada de tramas y del control del flujo. Es uno de los aspectos más importantes que revisar en el momento de conectar dos ordenadores, ya que está entre la capa 1 y 3 como parte esencial para la creación de sus protocolos básicos.

3.    Capa de red
Se encarga de identificar el enrutamiento existente entre una o más redes. Las unidades de información se denominan paquetes, y se pueden clasificar en protocolos enrutables y protocolos de enrutamiento.

4.    Capa de transporte
Capa encargada de efectuar el transporte de los datos (que se encuentran dentro del paquete) de la máquina origen a la de destino, independizándolo del tipo de red física que esté utilizando.

5.    Capa de sesión
Esta capa es la que se encarga de mantener y controlar el enlace establecido entre dos computadores que están transmitiendo datos de cualquier índole.

6.    Capa de presentación
El objetivo es encargarse de la representación de la información, de manera que aunque distintos equipos puedan tener diferentes representaciones internas de caracteres los datos lleguen de manera reconocible.

7.    Capa de aplicación
Ofrece a las aplicaciones la posibilidad de acceder a los servicios de las demás capas y define los protocolos que utilizan las aplicaciones para intercambiar datos


Conclusión

El modelo cliente servidor lo utilizamos prácticamente a diario, el más grande ejemplo es el internet, y el modelo OSI desde su creación fue una gran solución al problema de redes al poder estandarizalas.

miércoles, 20 de agosto de 2014

Sistema Distribuido y Redes

Introducción
Para esta nueva unidad de aprendizaje es vital conocer conceptos para poder comprender lo que se va a hacer, por lo se va a definir lo que es un sistema distribuido y una red.

Desarrollo
Un sistema distribuido es un conjunto de computadoras conectados a una misma red, capaces de realizar acciones independientes con el fin de dar un servicio mediante el intercambio y uso de información.

Un ejemplo sería una fábrica ensambladora  de automóviles, donde cada uno de los brazos robóticos que arman estos autos realiza una tarea diferente tal como soldar piezas, colocar puertas, etc., hay intercambio de información entre éstos y todo para poder lograr el objetivo de armar autos.

Una red es un conjunto de dispositivos informáticos que se comunican entre sí por medios físicos intercambiando datos con el propósito de realizar una tarea.

Hay tres tipos principales de redes:

  • LAN (Local Area Network)
  • MAN (Metropolitan Area Network)
  • WAN (Wide Area Network)
A continuación se presenta un cuadro con características de estas redes para poder observar cada una de sus características:

Tipo de Red
Alcance
Velocidad
# de PC’s
Usos
LAN
100 m.
10 a 100 MB/s
100
Edificios y/o redes de trabajo pequeñas, está limitada a poco número de  computadoras.
MAN
Alrededor de 4 km.
10 a 50 MB/s
Cientos
Une varias LAN en áreas geográficas pequeñas, puede ser usada para ciertos objetivos en una ciudad.
WAN
Países y continentes
Alrededor de 1MB/s
Cientos o miles
Usada para comunicarse alrededor del mundo, pero su velocidad es más lenta.


Conclusión
Los sistemas distribuidos son eficaces ya que varios dispositivos realizan una tarea común al mismo tiempo, y para su funcionamiento deben estar comunicándose mediante una red.