sábado, 25 de noviembre de 2017

RMI

Introducción
La invocación remota de métodos de Java es un modelo de objetos distribuidos, diseñado específicamente para ese lenguaje, por lo que mantiene la semántica de su modelo de objetos locales, facilitando de esta manera la implantación y el uso de objetos distribuidos.

¿Qué es el Remote Method Invocation (RMI) ?
Un RMI permite que una aplicación se comunique con objetos que residen en programas que se ejecutan en máquinas remotas, el programador liga el objeto remoto con uno local, conocido como stub. Los mensajes dirigidos al objeto remoto se envían al stub local. El stub acepta los mensajes que se le envíen, y a su vez, los envía al objeto remoto, que invoca sus respectivos métodos apropiados. El resultado de la invocación de dichos métodos en el objeto remoto se envía de regreso al stub local. Aparte de ligar el stub con el objeto remoto, el código escrito por el programador, para comunicar con el objeto remoto es igual al código que se utilizaría si el objeto se encontrara en una aplicación local.

Funcionamiento:
Cuando la aplicación del cliente envía un mensaje al stub local del objeto remoto, la petición se transmite a la máquina que contiene al objeto real, donde el método es invocado y cualquier resultado retornado al stub local, de modo que la aplicación cliente puede obtener la respuesta apropiada.
En java se usa java.rmi.Naming para permitir el acceso a objetos remotos utilizando un URL para especificar el nombre y lugar del objeto remoto.
El esqueleto es responsable de despachar la invocación al objeto remoto.

Acciones que ejecuta:
  • Desempaqueta los parámetros necesarios para la ejecución del método remoto.
  • Invoca el método de la implantación del objeto remoto.
  • Empaqueta los resultados y los envía de vuelta al cliente.
  • Tanto cabos como esqueletos, son generados por un compilador llamado rmic.


Características
  • Proporcionar invocación remota de objetos que se encuentran en MVs diferentes.
  • Soportar llamadas a los servidores desde los applets.
  • Integrar el modelo de objetos distribuidos en el lenguaje Java de una manera natural, conservando en medida de lo posible la semántica de los objetos Java.
  • Hacer tan simple como sea posible la escritura de aplicaciones distribuidas.
  • Preservar la seguridad proporcionada por el ambiente Java.
  • Proporcionar varias semánticas para las referencias de los objetos remotos (persistentes, no persistentes y de "activación retardada").


Conclusión
Los RMI son importantes para la construcción de aplicaciones distribuidas, ayudando en la comunicación de los objetos remotos, aparte de que posee las características de seguridad de java (las hereda). Sin ellos sería más difícil hacer un chat entre varias personas o hacer la comunicación entre determinados objetos remotos (no locales).

Referencias
Introduction to Remote Method Invocation, 19 de diciembre de 2015,  SlideShare, https://es.slideshare.net/elinkbiz/introduction-to-remote-method-invocation-rmi
Remote Method Invocation (RMI) de Java, recuperado el 25 de noviembre de 2017, Unam, http://lya.fciencias.unam.mx/jloa/rmi.pdf

Sosa Victor, recuperado el 25 de noviembre de 2017, Cinestav, http://www.tamps.cinvestav.mx/~vjsosa/clases/sd/DAAI_RMI.pdf

domingo, 19 de noviembre de 2017

Cifrado Hash

Introducción
Hoy en día es necesario proteger la integridad de la información y/o mensajes, para tal objetivo se han estado inventando nuevos métodos. Los cifrados son los más conocidos y en lo que más se enfocan para proteger un mensaje. De tal manera de hacerlo “ilegible”. Uno de esos cifrados es el hash.


¿Qué es?
Es un algoritmo matemático que transforma cualquier bloque de datos en una nueva serie de caracteres con una longitud. Independiente de la longitud de origen, el valor hash de salida tendrá siempre la misma longitud. Tambien sirve para firmar digitalmente un documento.

Funciones:
  1. Como el recorrido de la función de hash es un número natural, hay que saber interpretar o transformar a número natural tipo de clave.
  2. Es un método para generar claves o llaves que representen un documento o conjunto de datos.
  3. Usa un algoritmo matemático que nos da un resultado B, al aplicarlo en un valor A
  4. Debe ser imposible obtener el texto original a partir de la huella digital

Características
  • No importa la longitud de texto A, la longitud del hash siempre va a ser la misma
  • Cada cifrado hash será único
  • Para los ordenadores, es fácil  y rápido calcular el número resumen
  • Es imposible reconstruir el texto base a partir del número resumen
  • Tiene número de bits definido

Objetivos:
  • Asegurar la integridad de la información (Cifrado)
  • Firma Digital

Los cifrados Hash más conocidos:

  • MD5Es una función hash de 128 bits. Como todas las funciones hash, toma unos determinados tamaños a la entrada, y salen con una longitud fija (128bits). El algoritmo MD5 no sirve para cifrar un mensaje. La información original no se puede recuperar, ya que está específicamente diseñado para que a partir de una huella hash no se pueda recuperar la información. Actualmente esta función hash no es segura utilizarla, nunca se debe usar.
  • SHA-1Es parecido a MD5, pero tiene un bloque de 160bits en lugar de los 128bits. La función de compresión es más compleja que la función de MD5, SHA-1 es más lento que MD5 porque el número de pasos son de 80 (64 en MD5) y porque tiene mayor longitud que MD5 (160bits contra 128bits).
Conclusión

Hay muchos tipos de cifrados, otros más seguros que otros. Los cifrados Hash no son muy seguros, pero sin básicos para la seguridad y protección de los mensajes enviados. Y son importantes en la creación de firmas digitales, para validar un documento emitido. En general son básicos para la seguridad web.

Referencias
genbetadev, recuperado el 19 de noviembre de 2017, ¿Qué son y para qué sirven los hash?,  https://www.genbetadev.com/seguridad-informatica/que-son-y-para-que-sirven-los-hash-funciones-de-resumen-y-firmas-digitales
Donohue Brian, 10 de Abril del 2014,  kaspersky, ¿Qué es un Hash y cómo funciona?,   https://latam.kaspersky.com/blog/que-es-un-hash-y-como-funciona/2806/
De Luz, Sergio, 9 de Noviembre del 2010, RedesZone, Criptografía: Algoritmos de autenticación (hash),   https://www.redeszone.net/2010/11/09/criptografia-algoritmos-de-autenticacion-hash/

domingo, 12 de noviembre de 2017

Introducción
La autentificación es importante en una red, pues es necesario evitar la intercepción de los mensajes y proteger su integridad. Los servicios de autentificación garantizan que el emisor y el receptor de un mensaje, sea quien dice ser o verdadera. Aparte de que al enviar un mensaje para proteger aun mas su integridad es necesario encriptarlo al enviarlo y desencriptarlo al recibirlo. Kerberos es una forma eliminar la necesidad de aquellos protocolos que permiten métodos de autenticación inseguros, y de esta forma mejorar la seguridad general de la red.

¿Qué es Kerberos?
Es un servicio de seguridad o Protocolo de Autentificación de redes, que emplea un sistema de claves secretas compartidas para autentificar de forma segura un usuario en una red insegura. Fue desarrollado originalmente para el Proyecto Athena del MIT en la década de 1980 y ha crecido hasta convertirse en el sistema más ampliamente implementado para autenticación y autorización en redes informáticas modernas. Fue abierto a todo el público en 1987 y se convirtió en un estándar IETF en 1993.
Usa cifrado de tipo simétrico y el servicio de kerberos es un sistema de inicio de sesión único, debe emplear una infraestructura de red de kerberos V5
La administración de los ID de usuario se simplifica porque el KDC aloja un repositorio central para identificadores individuales. A las claves que usa el sistema de kerberos se les llama tickets.

Funcionamiento:
En vez de validar cada usuario para cada servicio de red, Kerberos usa encriptación simétrica y un tercero, un KDC, para autentificar los usuarios a un conjunto de servicios de red. Una vez que el usuario se ha autentificado al KDC, se le envía un ticket específico para esa sesión de vuelta a la máquina del usuario y cualquier servicio kerberizado buscará por el ticket en la máquina del usuario en vez de preguntarle al usuario que se autentifique usando una contraseña.
Cuando un usuario en una red kerberizada se registra en su estación de trabajo, su principal se envía al KDC en una petición para un TGT desde el servidor de autenticación (AS).
El KDC verifica el principal en su base de datos. Si lo encuentra, el KDC crea un TGT, el cual es encriptado usando las llaves del usuario y devuelto al usuario.
El programa login en la máquina del cliente o kinit descifra el TGT usando la contraseña del usuario La contraseña del usuario es usada únicamente en la máquina del cliente y no es enviada en la red.
El TGT, se configura para que caduque después de un cierto período de tiempo (usualmente 10 horas). El usuario no tiene que reingresar la contraseña al KDC sino hasta que el TGT caduque o se desconecte y vuelva a conectarse.
Cuando el usuario necesita acceder a un servicio de red, el software cliente usa el TGT para pedir un nuevo ticket para ese servicio en específico al servidor de otorgamiento de tickets, TGS. El ticket para el servicio es usado para autentificar el usuario a ese servicio de forma transparente.

Caracteristicas de Kerberos:
Solo se autentifica con el servicio una vez (inicio de sesión)
Los tickets de servicio existen en la red durante un periodo limitado.
Sólo el cliente y el servidor puede descifrar estas claves, por lo que los datos están protegidos si los tickets se interceptan desde la red.
La entrada del nombre de usuario y contraseña está limitada a la sesión de inicio de sesión inicial, lo que reduce el riesgo de una posible interceptación de credenciales de texto claro.

Ventajas:
  • Lamentablemente, la información de autenticación para muchos servicios se transmite sin estar encriptada. Para que un esquema de este tipo sea seguro, la red tiene que estar inaccesible a usuarios externos, y todos los usuarios de la red deben ser de confianza.
  • Aún en este caso, una vez que la red se conecte a la Internet, ya no puede asumir que la red es segura. Cualquier intruso del sistema con acceso a la red y un analizador de paquetes puede interceptar cualquier contraseña enviada de este modo, comprometiendo las cuentas de usuarios y la integridad de toda la infraestructura de seguridad.
  • El primer objetivo de Kerberos es el de eliminar la transmisión a través de la red de información de autenticación. Un uso correcto de Kerberos erradica la amenaza de analizadores de paquetes que intercepten contraseñas en su red.


Desventajas:
  • Kerberos es sólo parcialmente compatible con los Pluggable Authentication Modules (PAM) usados por la mayoría de los servidores Red Hat Enterprise Linux.
  • Si se usa kerberos, se debe recordar que si se transmite cualquier contraseña a un servicio que no usa Kerberos para autenticar, se corre el riesgo de que el paquete pueda ser interceptado. Para asegurar su red con Kerberos, solo debe utilizar las versiones kerberizadas (que funcionen con Kerberos) de todas las aplicaciones cliente/servidor que envíen contraseñas sin encriptar o no utilizar ninguna de estas aplicaciones en la red.
  • Si cualquier otro usuario aparte del usuario adecuado, tiene acceso a la máquina que emite tickets usados para la autenticación llamado: "Centro de distribución de llaves (KDC)", el sistema de autenticación de Kerberos completo está en riesgo.

Conclusión:
El servicio de kerberos es una forma de autenticación más segura que muchas otras, por su forma de envió. Si no existiera podría ser complicado defenderse de las intercepciones para quienes lo usan. Ya que incluye la encriptación en su envió. Pues su principal objetivo es a seguridad del mensaje. Tal vez aún tengo brechas abiertas contra los intrusos, pero son muy pocas. Y si lo mejoran llegaría a ser más importante que el estándar que es hoy en día.

Referencias:
IBM, recuperado el 12 de noviembre de 2017, Protocolo de Autentificación de Kerberos,  https://www.ibm.com/support/knowledgecenter/es/SSGU8G_12.1.0/com.ibm.sec.doc/ids_sso_002.htm
Oracle, recuperado el 12 de noviembre de 2017, ¿Qué es el servicio de Kerberos?,   https://docs.oracle.com/cd/E24842_01/html/E23286/intro-5.html
Web Mit, recuperado el 12 de noviembre de 2017, Capítulo 19. Kerberos,   http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-kerberos.html
Kerberos, 2013, Documentación Kerberos, http://www.kerberos.org/docs/index.html