jueves, 26 de febrero de 2015

Web Socket

Los Web Sockets son una nueva tecnología en el modelo Cliente-Servidor, la principal diferencia entre ellos y los Sockets que antiguamente se usaban es que un sólo Web Socket permite una comunicación bi-direccional, dúplex (simultánea), y ofrecen mayor rapidez; todo esto nos permite declarar un único Web Socket y dejarlo latente hasta que en cualquier momento se le vuelva a necesitar, y cerrarlo cuando el Cliente o el Servidor lo indiquen.

Los Web Sockets ya se usan en Google Chrome, Mozila Firefox, Opera y en Safari de forma nativa. En Internet Explorer estpan disponibles a partir de la versión 10 como un plug-in.

A continuación se describe el ciclo de vida de un Web Socket:

  1. El Cliente le envía al servidor una solicitud en la forma de una actualización de encabezado de HTTP con la información del Web Socket al que se quiere conectar.
  2. El Servidor responde a la solicitud con otro encabezado de HTTP.
  3. Si la solicitud fue aceptada, el Servidor, por medio de otro encabezado de HTTP, indica al Cliente que está cambiando al protocolo de Web Socket.
  4. Ahora se ha abierto una conexión constante que permite tanto al Cliente como al Servidor enviar cualquier número de mensajes entre ellos hasta que se cierre la conexión. Estos mensajes generalmente solo ocupan 2 bytes.

RMI

RMI de por sus siglas en inglés, o Invocación de Métodos Remotos (Remote Method Invocation), nos permite que un objeto que esté ejecutándose en una JVM (Máquina Virtual de Java del inglés Java Virtual Machine), invoque métodos de otro objeto ejecutándose en otra JVM, ya sea local o de otra computadora en red. Exclusivamente para programas en Java.

Funciona basado en el esquema Cliente-Servidor; para que funcione se necesita una interfaz remota que tenga los métodos remotos, está será conocida tanto por el Cliente como por el Servidor. A continuación se necesita que el servidor implemente la interfaz remota, es decir, un servidor que proveerá los servicios de la interfaz remota; y después hay que instanciar el servidor y generar un stub mediante la Máquina Virtual de RMI. Finalmente, hay que implementar el cliente que hará uso de los servicios.

Para poder producir la conectividad entre el cliente y servidor se ocupa una herramienta de JAVA, llamada RMI Registry. El RMI Registry puede estar localizado en un lugar distinto al servidor, y se encarga de registrar un determinado objeto y asignarle un servidor que se encargará de procesar dicho objeto.

Ya en la práctica podemos ver el funcionamiento de RMI de la siguiente manera: 
  1. Se ejecuta el RMI Registry, en algún lugar de la red. 
  2. El servidor que desea manejar un objeto, se registra en dicho servidor.
  3. El RMI Registry registra el par: OBJETO/SERVIDOR.
  4. El cliente que necesita utilizar un determinado objeto, hace una consulta al RMI Registry, quien devuelve el STUB listo para la comunicación.

lunes, 23 de febrero de 2015

Certificado Digital

Un certificado digital es un método de seguridad que nos permite garantizar la identidad de alguien. 

El certificado digital permite cifrar las comunicaciones, es decir, que solamente el destinatario de la información podrá acceder al contenido de la misma. 

Un Certificado Digital consta de una pareja de claves criptográficas, una pública y una privada, creadas con un algoritmo matemático, de forma que aquello que se cifra con una de las claves sólo se puede descifrar con su clave pareja. El titular del certificado debe mantener bajo su poder la clave privada, ya que si ésta es sustraída, el sustractor podría suplantar la identidad del titular en la red. En este caso el titular debe revocar el certificado lo antes posible, igual que cuando se anula una tarjeta de crédito sustraída. 

La clave pública forma parte de lo que se denomina Certificado Digital en sí, que es un documento digital que contiene la clave pública junto con los datos del titular, todo ello firmado electrónicamente por una Autoridad de Certificación (AC), que es una tercera entidad de confianza que asegura que la clave pública se corresponde con los datos del titular. La Firma Electrónica sólo puede realizarse con la clave privada. 

La Autoridad de Certificación se encarga de emitir los certificados para los titulares tras comprobar su identidad. El formato de los Certificados Digitales está definido por el estándar internacional ITU-T X.509. De esta forma, los certificados pueden ser leídos o escritos por cualquier aplicación que cumpla con el mencionado estándar.

En un Certificado Digital, el par de claves (pública y privada) se vinculan con un nombre de usuario y otra información identificatoria. Una vez que un Certificado es instalado en un navegador, funciona como una credencial electrónica que los sitios de la web pueden verificar. Esto habilita a Certificado Digital para ser empleado en lugar de las contraseñas o passwords para acceder a información o servicios sobre la red que requieren membresía o cuyo acceso está restringido a usuarios específicos.

Para que un certificado sea reconocido, se verifican las siguientes características:

Integridad del certificado: Verifica que el certificado se encuentre íntegro, esto lo hace descifrando la firma digital incluida en él mediante la llave pública de la AC y comparándola con una firma del certificado generada en ese momento, si ambas son iguales entonces el certificado es válido. 

Vigencia del certificado: Revisa el periodo de validez del certificado, es decir, la fecha de emisión y la fecha de expiración incluidos en él.

Verifica emisor del certificado: Hace uso de una lista de Certificados Raíz almacenados en el ordenador y que contienen las llaves públicas de las ACs conocidas y de confianza.

martes, 17 de febrero de 2015

Cifrado Simétrico, Asimétrico y Autenticación



    1.-Menciona las diferencias entre cifrado simétrico y asimétrico (4).
    • En el cifrado simétrico se utiliza la misma clave tanto para cifrar como para descifrar, en el cifrado asimétrico se utilizan diferentes claves.
    • En el cifrado simétrico el emisor y el receptor utilizan una clave secreta para cifrar/descifrar el mensaje. En el cifrado asimétrico, el emisor utiliza una clave pública para cifrar el mensaje y el receptor utiliza una clave privada para descifrarlo.
    • En el cifrado simétrico la seguridad depende de las claves, si alguno ya sea emisor o receptor, revela la clave, se compromete la seguridad. En el cifrado asimétrico la seguridad depende de la clave privada del receptor.
    • El cifrado asimétrico garantiza que solo la persona a la que va dirigido el mensaje lo pueda descifrar.
    2.- Menciona las diferencias entre cifrado asimétrico y autenticación.
    • La autenticación garantiza que el emisor del mensaje es quien dice ser, para ello, el emisor envía un mensaje cifrado con su clave privada al receptor que tiene una clave pública. El cifrado asimétrico sirve para que sólo la persona a quien va dirigido pueda descifrar el mensaje, para ello el emisor envía un mensaje cifrado con una clave pública al receptor que lo descifrará con su clave privada.
    3.-¿Qué es HTTPS?
    • Llamado así por sus siglas en inglés (HyperText Transfer Protocol Secure), o en español Protocolo de Hipertexto de Transferencia Segura. Se podría decir que es la versión segura del HTTP ya que es un protocolo basado sobre el mismo, pero que 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. Así se intenta garantizar que la información sensible no pueda ser usada por un atacante que haya podido interceptar la transferencia de datos de la conexión, ya que lo único que obtendrá será un flujo de datos cifrados que le resultarán imposibles de descifrar.
    4.-Diferencias entre certificado y firma digital.
    • La firma digital es una forma de autenticación encargada de garantizar la confidencialidad de la información transmitida. 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.
    • El certificado digital es emitido y firmado por una empresa certificadora autorizada. 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. El papel del certificado digital es salvaguardar la seguridad y fiabilidad de las firmas digitales, ya que sin un certificado digital, una firma digital puede falsificarse fácilmente. Un certificado digital es como la prueba de identidad de un individuo o empresa.


    sábado, 6 de septiembre de 2014

    Modelo cliente-servidor

    Introducción

    El término Cliente/Servidor fue usado por primera vez en 1980 para referirse a PC’s en red. Este modelo Cliente/Servidor empezó a ser aceptado a finales de los 80’s. Su funcionamiento es sencillo: 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.

    Hablaremos del modelo OSI que divide el proceso de transmisión de la información entre equipos informáticos.

    Desarrollo

    Empezaremos por definir cliente y servidor. Cliente es el ordenador o dispositivo que tiene la interacción más directa con el usuario; el cliente se va a encargar de mandar "requests" (peticiones) al servidor, tiene las funciones de administrar la interfaz de usuario, procesar la lógica de la aplicación y hacer validaciones locales, generar requerimientos de bases de datos y recibir resultados del servidor.

    El servidor, por su parte, está encargado de atender a múltiples clientes que hacen peticiones de algún recurso administrado por él. El servidor accesa, almacena, actualiza y organiza datos. El servidor es pasivo, es decir, espera peticiones para después procesarlas y responderlas; el servidor tiene un enfoque hacia la eficiencia, pues a veces tiene que responder a múltiples peticiones simultáneas.

    Está de sobra decir que el cliente y el servidor están en red.

    De acuerdo al modelo OSI, la transmisión de datos entre cliente y servidor se divide en 7 capas:

    7. Aplicación. Esta capa ofrece la interfaz y servicios que soportan las aplicaciones del usuario, así mismo, prepara la comunicación entre las personas para la transmisión en la red de datos; los servicios de la capa de aplicación inician la transferencia de datos.

    6. Presentación. Esta capa toma los paquetes de la capa de aplicación y los convierte a un formato genérico que pueden leer todas las computadoras, también se encarga de cifrar los datos así como de comprimirlos para reducir su tamaño.

    5. Sesión. Se encarga de establecer el enlace de comunicación (sesión) entre el emisor y el receptor, gestionarlo y además terminarlo.

    4. Transporte. Se encarga de controlar el flujo de datos entre los nodos que establecen una comunicación.

    3. Red. Crea una ruta para entregar los datos; en esta capa las direcciones lógicas (IPs) se convierten en direcciones físicas.

    2. Enlace de Datos. Se encarga de desplazar los datos por el enlace físico de comunicación hasta el nodo receptor, e identifica a cada computadora incluida en la red de acuerdo con su dirección de hardware.

    1. Físico. En la capa física las tramas procedentes de la capa de enlace de datos se convierten en una secuencia única de bits que puede transmitirse por el entorno físico de la red. La capa física también determina los aspectos físicos sobre la forma en que el cableado esta enganchado a la NIC de la computadora.

    Conclusión

    El modelo OSI fue importante para estandarizar los protocolos de trasmisión de datos y redes; y está presente casi siempre que tengamos una red. Por eso será importante para continuar en la Unidad de Aprendizaje de SIstemas Distribuidos.

    Bibliografía

    http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/marquez_a_bm/capitulo5.pdf
    http://docente.ucol.mx/sadanary/public_html/bd/cs.htm
    http://belarmino.galeon.com/
    http://es.slideshare.net/aldoariel/modelo-osi-12130527

    sábado, 23 de agosto de 2014

    Tarea 2 - Redes

    Introducción

    Sabemos ahora, que una red resulta esencial para poder hacer un sistema distribuido, pero puede que no sepamos que hay distintos tipos de redes para diferentes extensiones y número de equipos. En esta entrada voy a hablarles sobre los tres tipos de redes más conocidos: LAN, MAN y WAN.

    Desarrollo

    Una definición simple se los que es una red sería que una red es una conexión entre equipos que permite compartir información y recursos. Como ya había mencionado, hay varios tipos de redes de los que destacan las redes de tipo LAN, MAN y WAN.

    Red LAN.- Local Area Network, inglés para Red de Área Local, éste tipo de red es el más simple. Se usa para espacios locales, como su nombre lo dice; puede tener una extensión de hasta 200 metros y generalmente usa la conexión vía ethernet que es por cable. Alcanza una velocidad de 10 a 100 Mbps. Una red LAN puede soportar hasta 100 equipos conectados.

    Red MAN.- Metropolitan Area Network, inglés para Red de Área Metropolitana, es una versión mayor que la LAN. Tienen un alcance de hasta 50 kilómetros, alcanza una velocidad de 10 hasta 50 Mbps, soporta a cientos de equipos conectados. Generalmente se conecta por fibra óptica.

    Red WAN.- Wide Area Network, inglés para Red de Área Amplia, estas redes ocupan un área geográfica extensa, generalmente países o continentes. Tienen una velocidad de hasta 1 Mbps. Se conectan por fibra óptica y satélites.

    Tipo de Red
    Extensión
    Usuarios
    Número de equipos
    Velocidad
    LAN
    200 metros
    Oficinas de empresas o negocios
    100 como máximo
    10-100 Mbps
    MAN
    50 kilómetros
    Diversas oficinas de la misma empresa
    Cientos
    10-50 Mbps
    WAN
    Países o continentes
    Comunican varias empresas
    Miles
    0-1 Mbps

    Conclusión

    Esto solo fue una breve y rápida explicación de lo que son las redes y sus distintos tipos; más adelante profundarizaremos en algunos temas. Esto nos servirá posteriormente para saber como el tipo de red en el que esté nuestro sistema afectará en su rendimiento.

    viernes, 22 de agosto de 2014

    Tarea 1 - ¿Qué es un Sistema Distribuido?

    Introducción

    Hola, este semestre estaré llevando la Unidad de Aprendizaje de Sistemas Distribuidos y, como en el semestre anterior, estaré usando un blog para subir algunas de mis tareas, tanto para fines académicos como para que éstas le puedan ser de utilidad a alguien.

    Desarrollo

    Empezaremos por definir lo que es un sistema distribuido: Es un conjunto de computadoras en una red que trabajan en conjunto para realizar una tarea. Red es una conexión entre equipos que permite compartir información y recursos entre sus miembros.

    También cabe mencionar que las características más esenciales de un sistema distribuido son:

    -Concurrencia.- los equipos realizan varias tareas al mismo tiempo.
    -Ausencia de un reloj global.- los equipos son independientes unos de otros en lo que respecta a su reloj.
    -Errores independientes.- si un equipo falla, los demás pueden continuar con sus tareas sin ningún problema.

    Ya teniendo estas definiciones, un ejemplo de sistema distribuido podría ser el sistema de cajeros automáticos de un banco: Obviamente están en una red, que es lo que permite que se actualicen y compartan datos; son concurrentes porque hay muchos más de dos cajeros realizando tareas al mismo tiempo; los cajeros no tienen un reloj global, cada uno tiene uno por su cuenta; errores independientes: cuando hay un error en un cajero o éste deja de funcionar, los demás cajeros siguen funcionando y no se ven afectados.

    Conclusión

    Estos son los conceptos esenciales que necesitamos conocer para poder empezar a manejar o hacer nuestros sistemas distribuidos, aunque puede resultar tedioso manejar al principio puras conceptualidades, son importantes para comprender qué es lo que estamos haciendo o a qué se nos está refiriendo.