domingo, 11 de febrero de 2018

Conclusion de Ingeniera de Software

Ingeniería de Software vs Ingeniería en Sistemas
Conclusión:
La Ingeniería en Software y la Ingeniería en Sistemas tienen que ver con la programación, solo que la de Sistemas es más social o está más relacionada al manejo de los datos y a automatizar procesos, mientras que el de Software esta más atado al desarrollo de proyectos. Ambas tienen un enorme ámbito laboral, y se pueden complementar para hacer un Sistema Informático de mayor calidad.

Referencias: 
Ingeniería del Software. (11 de febrero de 2018). Obtenido de FIB: https://www.fib.upc.edu/es/estudios/grados/grado-en-ingenieria-informatica/plan-de-estudios/especialidades/ingenieria-del-software
Ingeniería en Sistemas. (11 de febrero de 2018). Obtenido de UTEPSA: http://www.utepsa.edu/v2/index.php?option=com_content&view=article&id=59&Itemid=134
Ingenieros en Computación. (11 de febrero de 2018). Obtenido de guia estudiantil internacional: https://www.guiaestudiantilinternacional.com/articles/computer_engineers.htm

Conclusiones de Soporte de Software

Soporte de Software

Conclusión:

El Soporte de Software es un paso después de la entrega, que funciona con la finalidad de que el Software sea mantenido, perdure más o satisfaga al usuario para resolver un defecto, error o fallo del producto, de esta forma el usuario no queda olvidado y el producto se vuelve más atractivo o le puede dar más confianza al cliente. Aparte de que puede servir para actualizarse a los nuevos entornos operativos. Por todas estas razones, el soporte de un sistema es importante una vez que haya sido lanzado para su uso.

Referencias (APA):
Mantenimiento de Software. (11 de febrero de 2018). Obtenido de SG: https://sg.com.mx/content/view/303
Que es el Soporte Tecnico. (11 de febrero de 2018). Obtenido de academia: http://www.academia.edu/17483769/Que_es_el_Soporte_Tecnico
Torres, D. M. (12 de julio de 2010). Ingenieria de Software. Obtenido de utm: http://www.utm.mx/~dtorres/cursos/ingsw/tema7.pdf

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



domingo, 22 de octubre de 2017

Cifrado Asimetrico

Introducción
¿Qué es cifrar? Es aplicar un algoritmo determinado con una clave, a la información que se quiere proteger, de forma confidencial. Existen dos tipos de cifrado, el asimétrico y simétrico. El cifrado asimétrico es más complejo. Para empezar, utiliza una clave para cifrar y otra distinta para descifrar. Por lo tanto, es más seguro que el simétrico que utiliza la misma clave para cifrar que para descifrar, la diferencia es que este es del tipo clave privada. Los cifrados ayudan a proteger la integridad de los datos, garantizar la autenticidad del emisor y el no repudio.

Cifrado Asimétrico
Este cifrado emplea dos claves, uno público y otro privado. Ya sea para cifrar o descifrar; La clave publica será accesible para todos, y la clave privada solo la deberá conocer el usuario de este.

Estos algoritmos, estan basados en funciones matematicas, una fácil de resolver y otra complicada, indistinto de si es cifrado o descifrado. Tambien se caracteriza porque al cifrarlo con una clave por ejemplo publica no se puede descifrar con la misma clave.

Su desventaja más grande es que consume más recursos computacionales, y por ello al cifrarlo o descifrarlo lleva más tiempo que con un cifrado simétrico.

Algoritmo de cifrado RSA
El nombre de RSA proviene de las inciales de los nombres de los creadores; Rivest, Shamir y Adleman por 1997.

El RSA es un cifrado asimétrico porque trabaja con dos claves distintas; sirve para cifrar y descifrar información. 

Generación de Claves:
  1. Se eligen dos números primos, los que tú quieres. (p, q)
  2. Calculas la multiplicación de estos dos números primos. (n)
  3. Calculas z=(p-1) * (q-1), donde el resultado de este es el límite del siguiente paso.
  4. Eliges otro número primo “k”, que no sean divisibles con z, y que estos números sean menores a z. Regularmente se elige el primer número con residuo de z.
  5. La clave publica es el conjunto de los números (n, k).
  6. Por último, se calcula la clave privada. Con k*j= 1(mod z) donde regularmente pasa a z dividiendo y buscan el resultado de la ecuación, donde se cumpla. Y lo que valga j es la clave privada.


Y Para cifrar un mensaje:
Se utiliza la ecuación P^k= E(mod n)
Y el resultado de la división con (mod n) se resta con la potencia.
Simbología:
  • Donde P= Mensaje normal.
  • N y k son la clave pública.
  • E= El mensaje cifrado.


Para descifrar el mensaje:
Se utiliza la ecuación E^j= P(mod n)
Y el resultado de la división con (mod n) se resta con la potencia.
Simbología:
  • E: Mensaje Cifrado.
  • J: Clave Privada.
  • P: Mensaje normal.
  • N: Parte de clave pública.


Cifrado Diffie-Hellman
Se usa para generar una clave privada simétrica a ambos extremos de un canal de comunicación inseguro. Se busca obtener la clave secreta con la que posteriormente se cifrara la información, usando un algoritmo de cifrado simétrico.
Este algoritmo no garantiza autentificación.

PCI DSS
Significa "Data Security Standard” (norma de seguridad de datos). Define el conjunto de requerimientos para gestionar la seguridad, definir políticas y procedimientos de seguridad, arquitectura de red, diseño de software. Es usado para la protección de las tarjetas de crédito.

Genera una firma digital para la autenticación de los documentos electrónicos. Fue presentado por el Instituto Nacional de Estándares y Tecnología en NIST en 1994. Utiliza la función Hash SHA y el algoritmo asimétrico DSA.

CRIPTOGRAFIA CON CURVAS ELIPTICAS
Requiere claves más pequeñas que otros sistemas de clave pública lo hacen un buen candidato para aplicaciones donde los requisitos de tamaño de memoria son más exigentes
alternativa a los criptosistemas de clave pública clásicos como el RSA y el ElGamal, tanto por la disminución del tamaño de las claves que se requieren como por el abanico de grupos que ofrecen en el mismo cuerpo base.

Una curva elíptica sobre un cuerpo KK es una curva algebraica sin puntos singulares que viene dada por una ecuación del tipo (véase [Sil])
y2+a1xy+a3y=x3+a2x2+a4x+a6,ai∈K,

denominada ecuación general de Weierstrass.
Si la característica del cuerpo es distinta de 22 y de 33, usando transformaciones lineales de las variables, la ecuación de la curva se puede expresar como:
y2=x3+ax+b,a,b∈K,(1)

denominada ecuación reducida de Weierstrass, debiendo ser el discriminante del polinomio cúbico en xx no nulo, es decir, 4⋅a3+27⋅b2≠04⋅a3+27⋅b2≠0, para que la curva no tenga singularidades.

Proceso:
  1. Escogemos una curva elíptica.
  2. La curva elíptica tiene un conjunto de soluciones (x,y).
  3. Si los valores x,y pertenecen a un campo finito, entonces los puntos (x,y) de la curva forman un grupo.
  4. Tomamos un elemento del grupo, y hallamos su logaritmo discreto para una base dada. Eso nos servirá de base para establecer algoritmos criptográficos de intercambio de claves y de firma digital.

 Conclusión
El cifrado asimétrico es el más seguro y complicado que el sistema simétrico, sin él, el cifrado no serviría de mucho ya que el simétrico no es muy seguro. Existen varios tipos de cifrados asimétricos, los cuales pueden ser utilizados por todos, para proteger la información enviada por internet, donde el más utilizado es el algoritmo RSA, aunque gasten más tiempo y recursos son más seguros y se logra el objetivo del cifrado, lograr proteger la integridad de los datos, tener la autentificación del emisor y evitar el repudio.

Referencias:
De Luz Sergio, 16 noviembre, 2010Criptografía : Algoritmos de cifrado de clave asimétrica,  REDES ZONE, https://www.redeszone.net/2010/11/16/criptografia-algoritmos-de-cifrado-de-clave-asimetrica/

Córdoba Diego, 8 de noviembre, 2016, RSA: ¿Cómo funciona un algoritmo de cifrado?, Junco TIC, https://juncotic.com/rsa-como-funciona-este-algoritmo/

seguinfo, 2 de octubre, 2017, ¿Qué es la criptografía de curva elíptica?, https://seguinfo.wordpress.com/2007/10/02/%C2%BFque-es-la-criptografia-de-curva-eliptica/

isecauditors, recuperado el 22 de octubre, 2017 , Implatación y certificación en el estándar PCI DSS, https://www.isecauditors.com/implantacion-pci-dss

Universidad Politecnica de Madrid, 12 de mayor de 2015, criptored, Criptografía con curvas elípticas, http://www.criptored.upm.es/crypt4you/temas/ECC/leccion1/leccion1.html

domingo, 15 de octubre de 2017

Scokets y Datagrama

Introducción
Son mecanismos de comunicación entre procesos que permiten que un proceso emita o reciba información con otro proceso incluso estando en distintas máquinas. Es decir, un canal de comunicación entre dos programas que están en distintos ordenadores.


Surgen a principios de los 80 con el sistema Unix de Berkeley, para proporcionar un medio de comunicación entre procesos.

Funcionamiento del Socket
Queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto.

Tres recursos que utiliza son:
  • Un protocolo de comunicaciones, que permite el intercambio de octetos.
  • Un par de direcciones del Protocolo de Red (Dirección IP, si se utiliza el Protocolo TCP/IP), que identifica la computadora de origen y la remota.
  • Un par de números de puerto, que identifica a un programa dentro de cada computadora.

A los sockets también se les puede implementar la arquitectura cliente-servidor, ya que la comunicación debe ser iniciada por una computadora (Cliente) y la otra espera a que inicie la comunicación (Servidor).

Tipos de Sockets
  • Los orientados a conexión:
    • SOCK_STREAM: está asociado al protocolo TCP, este brinda seguridad en la transmisión de datos, seguridad en la recepción, en la integridad y en la secuencia.
  • Los no orientados a conexión:
    • SOCK_DGRAM: está asociado al protocolo UDP, e indica que los paquetes viajarán en tipo datagramas.

Características de los Sockets

Características de los orientados a conexión

  • Es necesario establecer correctamente una conexión, donde es necesario la dirección IP del servidor y el servicio que se utilizara.
  • Ninguno de los dos puede transmitir datos.
  • Se usa el protocolo TCP/IP.
  • Garantiza que todos los datos lleguen al otro programa correctamente.
  • No se pierden datos.
  • No importa que un programa se quede bloqueado, puede estar esperando o transmitiendo datos.

Características de los no orientados a conexión
  • Es un protocolo UDP.
  • No es necesario que los programas se conecten.
  • Pueden transmitir datos sin que el otro programa este recibiendo o no.
  • Garantiza que los datos que lleguen sean correctos, mas no que lleguen todos.
  • Se pierden datos.
  • Evita que el programa se quede bloqueado.

Datagramas
Un datagrama es un fragmento de paquete que es enviado con la suficiente información para que la red pueda encaminar el fragmento hacia el equipo receptor, de manera independiente a los fragmentos restantes. Que puede provocar una recomposición desordenada o incompleta del paquete en el programa destino.
Los datagramas IP son las unidades principales de información de Internet y la más básica. Algunos protocolos basados en datagramas son IPX, UDP (Servidores de red no orientados a conexión). 

Conclusión
Los sockets son importantes para la comunicación entre dos programas abiertos en distintas computadoras, sin ellos no podrían comunicarse, y también es importante que existan los dos distintos tipos de sockets, ya que uno es para información importante que debe estar completa, y la otra es para el simple hecho de recibir mensajes, sin importar si se pierde información o no. Este último es el que utiliza los datagramas, que es como un mensaje en dividido en particiones, que se van enviando de uno en uno y que podrían afectar el orden del mensaje en la recepción de este. 
Que hacen que el envió del mensaje llegue incompleto o no en el tipo de socket no orientado a conexión.


Referencias
EcuRed (recuperado el 15 de octubre de 2017), Socket,  https://www.ecured.cu/Socket
TecnologiaHechaPalabra (recuperado el 15 de octubre de 2017), Datagrama,  http://www.tecnologiahechapalabra.com/datos/eventos/articulo.asp?i=6473
Ulpgc (recuperado el 15 de octubre de 2017), Sockets,  http://sopa.dis.ulpgc.es/ii-dso/leclinux/ipc/sockets/sockets.pdf