SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
República Bolivariana de Venezuela
Ministerio del Poder Popular Para la Educación
Universidad Nacional Experimental de Guayana
Ingeniería en Informática
Unidad Curricular: Tendencias Informáticas
Profesora: Integrantes:
Isabel García Lopez Ángel
Klie Daniel
Zambrano Arturo
Cordero Raelyx
Rojas Luis
Aguilar Jefferson
Julio 2016
Seguridad vs Software Libre
SOFTWARE LIBRE Y CÓDIGO ABIERTO
Software Libre
Para entender la situación de este tipo de software con respecto a su uso en
seguridad informática es imprescindible describir, en primer lugar, a qué se refiere
el concepto de “software libre”.
En general se entiende como software libre aquel programa o conjunto de ellos de
los que el usuario puede disponer del código fuente, sin restricciones, y el cual
puede modificar y redistribuir también sin restricciones.
El principio del Software Libre cumple con cuatro libertades básicas que la FSF
(Free Software) establece para los usuarios:
 Libertad 1: La libertad de ejecutar el programa como se desea, con
cualquier propósito.
 Libertad 2: La libertad de estudiar cómo funciona el programa, y cambiarlo
para que haga lo que usted quiera. El acceso al código fuente es una
condición necesaria para ello.
 Libertad 3: La libertad de redistribuir copias para ayudar a su prójimo.
 Libertad 4: La libertad de distribuir copias de sus versiones modificadas a
terceros. Esto le permite ofrecer a toda la comunidad la oportunidad de
beneficiarse de las modificaciones. El acceso al código fuente es una
condición necesaria para ello.
Estas libertades garantizadas al usuario del software (o a aquel que lo recibe) no
son contrarias a los derechos legítimos del autor del programa, es decir, éste no
tiene por qué perder sus derechos sobre el mismo. No se incluye, por tanto, en esta
definición software en el “domino público” (aquél para en el que el autor ha cedido
todos sus derechos).
Un programa informático es software libre si otorga a los usuarios todas estas
libertades de manera adecuada. De lo contrario no es libre. Existen diversos
esquemas de distribución que no son libres, y si bien podemos distinguirlos sobre
la base de cuánto les falta para llegar a ser libres, su uso bien puede ser considerado
contrario a la ética en todos los casos por igual.
El software libre suele estar disponible gratuitamente, o al precio de coste de la
distribución a través de otros medios; sin embargo, no es obligatorio que sea así,
por lo tanto, no hay que asociar software libre a software gratuito, ya que,
conservando su carácter de libre, puede ser distribuido comercialmente.
Análogamente, el software gratis o gratuito incluye en ocasiones el código fuente;
no obstante, este tipo de software no es libre en el mismo sentido que el software
libre, a menos que se garanticen los derechos de modificación y redistribución de
dichas versiones modificadas del programa.
Código abierto
Open Source o código abierto, es la expresión con la que se conoce al software
distribuido y desarrollado libremente. Es un movimiento más pragmático, se enfoca
más en los beneficios prácticos como acceso al código fuente que en aspectos
éticos o de libertad que son tan relevantes en el Software Libre.
Su premisa es que al compartir el código, el programa resultante tiende a ser de
calidad superior al software propietario, es una visión técnica. Obviamente para
lograr calidad técnica lo ideal es compartir el código, pero no estás obligado a
hacerlo.
VENTAJAS DEL SOFTWARE LIBRE EN EL MUNDO DE LA SEGURIDAD
El software libre deriva una serie de ventajas sobre el propietario, como lo son:
 Al disponer del código fuente de los programas en su totalidad, éste puede
ser analizado por terceras personas ajenas a sus autores en busca de fallos
de diseño o de implementación. Es decir, cualquiera con los conocimientos
necesarios puede realizar una auditoría del código del programa.
 La posibilidad de realizar modificaciones libremente al código fuente y
distribuirlas permite que cualquiera pueda ofrecer mejoras sobre éste. Estas
mejoras podrán ser nuevas funcionalidades que se incorporen al mismo o
parches que corrijan problemas detectados anteriormente.
 Las características del software libre hacen que no sea lógico cargar costes
sobre el software en sí (dado que se ha de distribuir sin cargo), lo que permite
que este tipo de software pueda ser utilizado por organizaciones y personas
con menos recursos económicos. Esto se presenta como una ventaja cuando
se compara con los precios de lo que cuesta el software de seguridad
propietario hoy en día (licencias de cortafuegos, vpns, sistemas de detección
de intrusos, etc.). El software libre pone en manos de cualquiera el tipo de
tecnología que, hoy por hoy, sólo podían tener grandes corporaciones.
 De igual forma, la posibilidad de modificar libremente el software permite a
las organizaciones que lo adapten a sus propias necesidades, pudiendo
eliminar funcionalidades que no le sean de interés. En el mundo de la
seguridad existe la máxima de “lo más sencillo es más seguro” por ello
poder eliminar funciones innecesarias de las herramientas las puede
convertir de forma inmediata en más seguras (porque no podrán ser
utilizadas estas funcionalidades para subvertirlas).
SEGURIDAD INFORMÁTICA Y EL USO DEL SOFTWARE LIBRE
Habitualmente los usuarios no tienen en cuenta cuando hacen uso de los sistemas
ya que ignoran los temas relacionados sobre la seguridad en internet en el trabajo
o en las empresas, ya que las personas no consideran los tipos de seguridad lo
toman como una molestia porque suele ir en contra de sus comodidades y
facilidades los usuarios suelen tomar este tema de forma negativa lo consideran
molesto porque algunas veces les impide la realización de un determinado trabajo
porque encuentran tareas que le pueden resultar incomodas al recordar
contraseñas por ejemplo por razones de memoria o rapidez les cuesta mucho
recordad o ingresar claves cada vez que sea necesario.
Pero hoy en día la seguridad es fundamental a la hora de proteger o afrontan tareas
sobre sistemas de información de seguridad en el día, día de cada persona ya que
la seguridad es una medida que permite garantizar cantidades de información que
se requiera proteger para ciertas personas que intenten violar el acceso a aquello
que pueda estar protegido.
¿Son necesarios los mecanismos de seguridad?
Es necesario para tener privacidad en cuanto el intercambio de información porque
sin darse cuenta esa información puede ir a parar en manos equivocadas o
desconocidas o que otros violen dicha privacidad. Por otro lado, tampoco no se
puede estar seguro de que el sistema que se esté conectado o usando resulte quien
dice ser, no existe una certeza de los sistemas que se estén usando sean realmente
auténticos o confiables, además no es solamente enviar o utilizar los sistemas es
también adquirir productos que pueden ocasionar daños involuntarios por ejemplo
virus espías que te pueden roban los archivos entre otros.
Otro tema que es muy resaltante en la seguridad informática en el uso del software
libre del cual ya se habló en ése trabajo, además de las ventajas del software libre
en el mundo de la seguridad son fundamentales porque al disponer del código
fuente cualquiera con los conocimientos necesarios puede realizar una auditoría del
código del programa entonces quiere decir que cualquiera persona que tenga los
conocimientos necesarios puede mejorar dicho programa, por su parte en el
software propietario no se tiene acceso al código fuente, esto puede llevar que el
fabricante tenga una sensación de seguridad y los usuarios tienen la necesidad de
confiar totalmente en el fabricante. Por eso ahora se distribuye el software libre por
su libre acceso se puede modificar libremente pero el software libre no está libre de
desventajas no porque las posibilidades de generar más fácilmente los virus y
también con la evolución futura los componentes del software no están seguros.
ENCRIPTACIÓN
Encriptación
Es el proceso mediante el cual cierta información o texto sin formato es cifrado de
forma que el resultado sea ilegible a menos que se conozcan los datos necesarios
para su interpretación. Es una medida de seguridad utilizada para que al momento
de almacenar o transmitir información sensible ésta no pueda ser obtenida con
facilidad por terceros.
Opcionalmente puede existir además un proceso de desencriptación a través del
cuál la información puede ser interpretada de nuevo a su estado original, aunque
existen métodos de encriptación que no pueden ser revertidos. El término
encriptación es traducción literal del inglés y no existe en el idioma español. La
forma más correcta de utilizar este término sería cifrado.
Criptología
Es la ciencia que estudia la transformación de un determinado mensaje en un código
de forma tal que a partir de dicho código solo algunas personas sean capaces de
recuperar el mensaje original.
La mayoría de los algoritmos modernos del cifrado se basan en una de las
siguientes dos categorías de procesos:
 Problemas matemáticos que son simples pero que tienen una inversa que se
cree (pero no se prueba) que es complicada
 Secuencias o permutaciones que son en parte definidos por los datos de
entradas.
La primera categoría, que resume la mayoría de los métodos del cifrado de clave
pública, sufre de la incapacidad de probar la dificultad de los algoritmos. El segundo
método, que contiene a la mayoría de los códigos, sufre a menudo de correlaciones
teóricas entre la entrada ("texto de entrada") y la salida ("texto cifrado").
Usos de la Encriptación
Algunos de los usos más comunes de la encriptación son el almacenamiento y
transmisión de información sensible como contraseñas, números de identificación
legal, números de tarjetas de crédito, reportes administrativo-contables y
conversaciones privadas, entre otros.
Como sabemos, en un Sistema de Comunicación de Datos, es de vital importancia
asegurar que la Información viaje segura, manteniendo su autenticidad, integridad,
confidencialidad y el no repudio de la misma entre otros aspectos.
Estas características solo se pueden asegurar utilizando las Técnicas de Firma
Digital Encriptada y la Encriptación de Datos.
Métodos de Encriptación
Para poder Encriptar un dato, se pueden utilizar tres procesos matemáticos
diferentes:
1. Algoritmo HASH:
Este algoritmo efectúa un cálculo matemático sobre los datos que constituyen
el documento y da como resultado un número único llamado MAC. Un mismo
documento dará siempre un mismo MAC.
2. Criptografía de Clave Secreta o Simétrica:
Utilizan una clave con la cual se encripta y desencripta el documento. Todo
documento encriptado con una clave, deberá desencriptarse, en el proceso
inverso, con la misma clave. Es importante destacar que la clave debería
viajar con los datos, lo que hace arriesgada la operación, imposible de utilizar
en ambientes donde interactúan varios interlocutores.
3. Algoritmos Asimétricos (RSA):
Requieren dos Claves, una Privada (única y personal, solo conocida por su
dueño) y la otra llamada Pública, ambas relacionadas por una fórmula
matemática compleja imposible de reproducir. El concepto de criptografía de
clave pública fue introducido por Whitfield Diffie y Martin Hellman a fin de
solucionar la distribución de claves secretas de los sistemas tradicionales,
mediante un canal inseguro. El usuario, ingresando su PIN genera la clave
Publica y Privada necesarias. La clave Publica podrá ser distribuida sin
ningún inconveniente entre todos los interlocutores. La Privada deberá ser
celosamente guardada. Cuando se requiera verificar la autenticidad de un
documento enviado por una persona se utiliza la Clave Publica porque el
utilizó su Clave Privada.
TLS (TRANSPORT LAYER SECURITY)
El protocolo TLS (Transport Layer Security) es una evolución del protocolo SSL
(Secure Sockets Layer), es un protocolo mediante el cual se establece una conexión
segura por medio de un canal cifrado entre el cliente y servidor. Así el intercambio
de información se realiza en un entorno seguro y libre de ataques.
Normalmente el servidor es el único que es autenticado, garantizando así su
identidad, pero el cliente se mantiene sin autenticar, ya que para la autenticación
mútua se necesita una infraestructura de claves públicas (o PKI) para los clientes.
Estos protocolos permiten prevenir escuchas (eavesdropping), evitar la falsificación
de la identidad del remitente y mantener la integridad del mensaje en una aplicación
cliente-servidor.
Descripción Del Protocolo
El protocolo SSL/TSL se basa en tres fases básicas:
 Negociación: Los dos extremos de la comunicación (cliente y servidor)
negocian que algoritmos criptográficos utilizarán para autenticarse y cifrar la
información. Actualmente existen diferentes opciones:
 Para criptografía de clave pública: RSA, Diffie-Hellman, DSA (Digital
Signature Algorithm).
 Para cifrado simétrico: RC2, RC4, IDEA (International Data Encryption
Algorithm), DES (Data Encryption Standard), Triple DES o AES (Advanced
Encryption Standard).
 Con funciones hash: MD5 o de la familia SHA.
 Autenticación y Claves: Los extremos se autentican mediante certificados
digitales e intercambian las claves para el cifrado, según la negociación.
 Transmisión Segura: los extremos pueden iniciar el tráfico de información
cifrada y autentica.
Objetivos Del Protocolo TLS
Los objetivos del protocolo son varios:
 Seguridad criptográfica. El protocolo se debe emplear para establecer una
conexión segura entre dos partes.
 Interoperabilidad. Aplicaciones distintas deben poder intercambiar
parámetros criptográficos sin necesidad de que ninguna de las dos conozca
el código de la otra.
 Extensibilidad. El protocolo permite la incorporación de nuevos algoritmos
criptográficos.
 Eficiencia. Los algoritmos criptográficos son costosos computacionalmente,
por lo que el protocolo incluye un esquema de cache de sesiones para reducir
el número de sesiones que deben inicializarse desde cero (usando
criptografía de clave pública).
Funcionamiento Del Protocolo TLS
El protocolo está dividido en dos niveles:
 Protocolo de registro TLS (TLS Record Protocol).
 Protocolo de mutuo acuerdo TLS (TLS Handshake Protocol).
El de más bajo nivel es el Protocolo de Registro, que se implementa sobre un
protocolo de transporte fiable como el TCP. El protocolo proporciona seguridad en
la conexión con dos propiedades fundamentales:
 La conexión es privada. Para encriptar los datos se usan algoritmos de
cifrado simétrico. Las claves se generan para cada conexión y se basan en
un secreto negociado por otro protocolo (como el de mutuo acuerdo). El
protocolo también se puede usar sin encriptación.
 La conexión es fiable. El transporte de mensajes incluye una verificación de
integridad.
El Protocolo de mutuo acuerdo, proporciona seguridad en la conexión con tres
propiedades básicas:
 La identidad del interlocutor puede ser autentificada usando criptografía de
clave pública. Esta autentificación puede ser opcional, pero generalmente es
necesaria al menos para uno de los interlocutores.
 La negociación de un secreto compartido es segura.
 La negociación es fiable, nadie puede modificar la negociación sin ser
detectado por los interlocutores.
AUTENTICACION JWT
Una funcionalidad que casi no puede faltar cuando estamos desarrollando una
aplicación web Java moderna (por ejemplo nuestra startup), es la autenticación de
usuarios, esto puede implementarse usando los mecanismos estándar provistos por
Java EE o siguiendo la tendencia actual de integración con los servicios de
autenticación de las redes sociales más conocidas, los famosos botones login with
Facebook/Google/Twitter ... entre otros.
La intención de este post es conocer sobre la autenticación con JSON Web Tokens
y entender en que se diferencia y porque en algunos escenarios, es más beneficiosa
que los métodos tradicionales de autenticación web. Adicionalmente como ejemplo
práctico crearemos una aplicación web Cloud Friendly con Spring-Boot,
AngularJs, MongoDB y la librería open source de autenticación con JSON Web
tokens Satellizer la cual incluye soporte para Java y javascript, en esta aplicación
nos integraremos con la autenticación OAuth de Facebook y Google.
Autenticación tradicional en las aplicaciones Web Java
Los mecanismos tradicionales de autenticación de usuarios en las aplicaciones Web
funcionan de la siguiente manera: Cuando un usuario se da de alta en un sitio, el
nombre de usuario y pasabordo se comparan con una entrada en un
almacenamiento persistente de información, como una base de datos relacional, si
la información concuerda, en la memoria del servidor se almacena el estado de
autenticación del usuario y se envía de vuelta un cookie que en la mayoría de los
casos contiene el id de usuario, o el id de la sesión.
El browser por su parte almacenará el cookie para el dominio de donde viene y
automáticamente la enviara de regreso en cada petición futura. Este mecanismo
funciona bien en muchos escenarios, de hecho una gran cantidad de aplicaciones
web de hoy día funcionan de esta manera. Sin embargo, vamos a ver ahora como
ciertas características de las aplicaciones web modernas hacen que usar estos
mecanismos sea todo un desafío.
Un gran desafío: La necesidad de escalar horizontalmente
Las aplicaciones web modernas ya no se despliegan en un único servidor, para
manejar altos volúmenes de usuarios concurrentes con baja latencia y alta
disponibilidad, la aplicación debe ser distribuida en varios servidores, lo cual tiene
como efecto que cuando un usuario accede a la aplicación no se garantice que
siempre acceda al mismo servidor.
Conociendo que la autenticación tradicional se basa en almacenamiento de estado
de la memoria del servidor, en una arquitectura como esta, un usuario estaría
autenticado en un servidor pero no en los demás. Para solucionar esto, se tiene la
alternativa de replicar en tiempo real los datos de sesión en todos los servidores, o
usar Sticky sessions. Sticky sessions, es un mecanismo donde se crea afinidad
entre el usuario y el servidor donde inicialmente se autenticó, de manera que las
peticiones del usuario siempre son enrutadas al servidor donde se dio de alta
inicialmente. Ninguno de estos dos mecanismos funciona bien en la arquitectura de
las aplicaciones web modernas.
AUTENTICACIÓN STATELESS CON JSON WEB TOKENS
Para enfrentar los desafíos mencionados, afortunadamente existe como alternativa
la autenticación basada en tokens, usando JSON Web tokens(JWT) para
autenticación. Un JWT es una estructura JSON codificada que contiene tres partes:
1. Header
Es información en formato JSON que contiene el tipo y la codificación utilizada, la
información se codifica en Base64URL.
Información JSON sin codificar:
{
"typ": "JWT",
"alg": "HS256
}
2. Payload
El Payload contiene cualquier información importante para la aplicacion en la forma
de Claims. El id del usuario debe ser enviado como un sub claim, pero
adicionalmente cual otra información importante como nombre de usuario, email y
otros puede ser incluido. El Payload también está codificado en Base64URL.
{
"sub":"64a8c8e91b07892bsn42965e2f9",
"exp":1300819380,
"email":"user@mail.com"
}
3. Signature
La signature es usada para verificar la autenticidad del JWT, básicamente está
compuesta la información del Header y Payload cifrados en Base64 con una clave
secreta (almacenada en nuestro backend). Existen diferentes algoritmos que
pueden ser usadas para la firma (HMAC, RSA).
Desde la perspectiva del usuario, darse de alta en una aplicación que usa JWT, no
tiene diferencia con una aplicación con autenticación tradicional. El usuario ingresa
sus credenciales, el servidor las verifica contra un almacenamiento o servicio, pero
en lugar de crear una sesión y retornar un cookie, retornará un objeto JSON que
contienen un JWT. Del lado del cliente el JWT necesita ser almacenado, lo cual se
hace normalmente en el almacenamiento local.
El JWT debe ser enviado al servidor para acceder rutas protegidas, y generalmente
es enviado en un Header HTTP de autorización.
Los servicios en el API o ruta protegida esperan y chequean un JWT válido, y si hay
uno, procesarán la petición y retornará la respuesta esperada. Dado que la
información del usuario está contenida dentro del JWT, no hay necesidad de validar
el usuario en la base datos, lo cual disminuye la latencia de la aplicación.
Resaltaremos que el estado del usuario nunca es almacenado en la memoria del
servidor, lo cual significa que el usuario no está autenticado en el sentido tradicional.
Sin embargo, un JWT válido le da al usuario la llave para acceder a los datos cada
vez que hace una petición, de esta manera es implementada la autenticación sin
estado.
MIDDLEWARE'S
Los middleware, son funciones que nos permiten agregar filtros a cada petición
HTTP realizada por un usuario en una aplicación. La finalidad de este componente
es disminuir la carga de trabajo en los controladores y proporcionar una solución
mucho más simple y estándar a la hora de aplicar las restricciones necesarias en el
proyecto.
La versatilidad de los middleware te permite agregar restricciones por zona horaria,
geolocalización, login, edad, genero, rol o tipo de usuario, y básicamente todo lo
que quieras. esto te permite bloquear acceso a ciertas áreas de tu aplicación para
un usuario o un grupo de usuarios en específico.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (14)

Tic
TicTic
Tic
 
Software libre. Educacion Integral.
Software libre. Educacion Integral.Software libre. Educacion Integral.
Software libre. Educacion Integral.
 
Proyecto del rdtic fusionado
Proyecto del rdtic fusionadoProyecto del rdtic fusionado
Proyecto del rdtic fusionado
 
Observaciones al reglamento tic por organizaciones sociales
Observaciones al reglamento tic por organizaciones socialesObservaciones al reglamento tic por organizaciones sociales
Observaciones al reglamento tic por organizaciones sociales
 
Ensayo software libre
Ensayo   software libreEnsayo   software libre
Ensayo software libre
 
Open Source
Open Source Open Source
Open Source
 
Software libre en_educacion
Software libre en_educacionSoftware libre en_educacion
Software libre en_educacion
 
Tic tibi
Tic tibiTic tibi
Tic tibi
 
El software
El softwareEl software
El software
 
software libre
software libre software libre
software libre
 
Tarea Nº 1: software libre, Resumen Ejecutivo
Tarea Nº 1: software libre, Resumen EjecutivoTarea Nº 1: software libre, Resumen Ejecutivo
Tarea Nº 1: software libre, Resumen Ejecutivo
 
Tipos de software libres
Tipos de software libresTipos de software libres
Tipos de software libres
 
Presentación1
Presentación1Presentación1
Presentación1
 
Presentación1
Presentación1Presentación1
Presentación1
 

Similar a Seguridad Informática y Software Libre

Seguridad vs Software Libre
Seguridad vs Software Libre Seguridad vs Software Libre
Seguridad vs Software Libre Hector L
 
Tendencias de la informatica y su incidencia en la seguridad
Tendencias de la informatica y su incidencia en la seguridadTendencias de la informatica y su incidencia en la seguridad
Tendencias de la informatica y su incidencia en la seguridadRaelyx Cordero
 
MODULO II. Informática, Política de Estado y Soberanía I
MODULO II. Informática, Política de Estado y Soberanía IMODULO II. Informática, Política de Estado y Soberanía I
MODULO II. Informática, Política de Estado y Soberanía IAndrea Suarez Contreras
 
software libre duayen
software libre duayensoftware libre duayen
software libre duayenfedee.28
 
software libre y propietario, licenciamiento de software y derechos de autor
software libre y propietario, licenciamiento de software y derechos de autorsoftware libre y propietario, licenciamiento de software y derechos de autor
software libre y propietario, licenciamiento de software y derechos de autorleidyg1009
 
Trabajo informática
Trabajo informática Trabajo informática
Trabajo informática Eymi Machado
 
Informática, Política de estado y Soberanía I
Informática, Política de estado y Soberanía IInformática, Política de estado y Soberanía I
Informática, Política de estado y Soberanía Iramirez gabriela
 
Ventajas y desventajas del software libre
Ventajas y desventajas del software libreVentajas y desventajas del software libre
Ventajas y desventajas del software libreguest18271ce3
 
Ventajas y desventajas del software libre
Ventajas y desventajas del software libreVentajas y desventajas del software libre
Ventajas y desventajas del software libreAriana
 
Ventajas Y Desventajas Del Software Libre
Ventajas Y Desventajas Del Software LibreVentajas Y Desventajas Del Software Libre
Ventajas Y Desventajas Del Software LibreVaneUCAB
 
Software Libre Y Propietario Herrami [1]
Software Libre Y Propietario Herrami [1]Software Libre Y Propietario Herrami [1]
Software Libre Y Propietario Herrami [1]leidyg1009
 
Software Libre Y Propietario Herrami [1]
Software Libre Y Propietario Herrami [1]Software Libre Y Propietario Herrami [1]
Software Libre Y Propietario Herrami [1]pasacastres
 
Software libre
Software libreSoftware libre
Software librecartrual
 
Informática, política de estado y soberanía i
Informática, política de estado y soberanía iInformática, política de estado y soberanía i
Informática, política de estado y soberanía iramirez gabriela
 

Similar a Seguridad Informática y Software Libre (20)

Seguridad vs Software Libre
Seguridad vs Software Libre Seguridad vs Software Libre
Seguridad vs Software Libre
 
Tendencias de la informatica y su incidencia en la seguridad
Tendencias de la informatica y su incidencia en la seguridadTendencias de la informatica y su incidencia en la seguridad
Tendencias de la informatica y su incidencia en la seguridad
 
MODULO II. Informática, Política de Estado y Soberanía I
MODULO II. Informática, Política de Estado y Soberanía IMODULO II. Informática, Política de Estado y Soberanía I
MODULO II. Informática, Política de Estado y Soberanía I
 
software libre duayen
software libre duayensoftware libre duayen
software libre duayen
 
software libre y propietario, licenciamiento de software y derechos de autor
software libre y propietario, licenciamiento de software y derechos de autorsoftware libre y propietario, licenciamiento de software y derechos de autor
software libre y propietario, licenciamiento de software y derechos de autor
 
Trabajo informática
Trabajo informática Trabajo informática
Trabajo informática
 
El software libre en el mundo de la seguridad
El software libre en el mundo de la seguridadEl software libre en el mundo de la seguridad
El software libre en el mundo de la seguridad
 
Software Libre Y Software Gratis
Software Libre Y Software GratisSoftware Libre Y Software Gratis
Software Libre Y Software Gratis
 
Software libre-y-gratuito
Software libre-y-gratuitoSoftware libre-y-gratuito
Software libre-y-gratuito
 
Informática, Política de estado y Soberanía I
Informática, Política de estado y Soberanía IInformática, Política de estado y Soberanía I
Informática, Política de estado y Soberanía I
 
Software libre
Software libreSoftware libre
Software libre
 
Alejandra viña
Alejandra viñaAlejandra viña
Alejandra viña
 
Ventajas y desventajas del software libre
Ventajas y desventajas del software libreVentajas y desventajas del software libre
Ventajas y desventajas del software libre
 
Ventajas y desventajas del software libre
Ventajas y desventajas del software libreVentajas y desventajas del software libre
Ventajas y desventajas del software libre
 
Ventajas Y Desventajas Del Software Libre
Ventajas Y Desventajas Del Software LibreVentajas Y Desventajas Del Software Libre
Ventajas Y Desventajas Del Software Libre
 
Sofware libre
Sofware libreSofware libre
Sofware libre
 
Software Libre Y Propietario Herrami [1]
Software Libre Y Propietario Herrami [1]Software Libre Y Propietario Herrami [1]
Software Libre Y Propietario Herrami [1]
 
Software Libre Y Propietario Herrami [1]
Software Libre Y Propietario Herrami [1]Software Libre Y Propietario Herrami [1]
Software Libre Y Propietario Herrami [1]
 
Software libre
Software libreSoftware libre
Software libre
 
Informática, política de estado y soberanía i
Informática, política de estado y soberanía iInformática, política de estado y soberanía i
Informática, política de estado y soberanía i
 

Seguridad Informática y Software Libre

  • 1. República Bolivariana de Venezuela Ministerio del Poder Popular Para la Educación Universidad Nacional Experimental de Guayana Ingeniería en Informática Unidad Curricular: Tendencias Informáticas Profesora: Integrantes: Isabel García Lopez Ángel Klie Daniel Zambrano Arturo Cordero Raelyx Rojas Luis Aguilar Jefferson Julio 2016 Seguridad vs Software Libre
  • 2. SOFTWARE LIBRE Y CÓDIGO ABIERTO Software Libre Para entender la situación de este tipo de software con respecto a su uso en seguridad informática es imprescindible describir, en primer lugar, a qué se refiere el concepto de “software libre”. En general se entiende como software libre aquel programa o conjunto de ellos de los que el usuario puede disponer del código fuente, sin restricciones, y el cual puede modificar y redistribuir también sin restricciones. El principio del Software Libre cumple con cuatro libertades básicas que la FSF (Free Software) establece para los usuarios:  Libertad 1: La libertad de ejecutar el programa como se desea, con cualquier propósito.  Libertad 2: La libertad de estudiar cómo funciona el programa, y cambiarlo para que haga lo que usted quiera. El acceso al código fuente es una condición necesaria para ello.  Libertad 3: La libertad de redistribuir copias para ayudar a su prójimo.  Libertad 4: La libertad de distribuir copias de sus versiones modificadas a terceros. Esto le permite ofrecer a toda la comunidad la oportunidad de beneficiarse de las modificaciones. El acceso al código fuente es una condición necesaria para ello. Estas libertades garantizadas al usuario del software (o a aquel que lo recibe) no son contrarias a los derechos legítimos del autor del programa, es decir, éste no tiene por qué perder sus derechos sobre el mismo. No se incluye, por tanto, en esta definición software en el “domino público” (aquél para en el que el autor ha cedido todos sus derechos). Un programa informático es software libre si otorga a los usuarios todas estas libertades de manera adecuada. De lo contrario no es libre. Existen diversos esquemas de distribución que no son libres, y si bien podemos distinguirlos sobre la base de cuánto les falta para llegar a ser libres, su uso bien puede ser considerado contrario a la ética en todos los casos por igual. El software libre suele estar disponible gratuitamente, o al precio de coste de la distribución a través de otros medios; sin embargo, no es obligatorio que sea así,
  • 3. por lo tanto, no hay que asociar software libre a software gratuito, ya que, conservando su carácter de libre, puede ser distribuido comercialmente. Análogamente, el software gratis o gratuito incluye en ocasiones el código fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa. Código abierto Open Source o código abierto, es la expresión con la que se conoce al software distribuido y desarrollado libremente. Es un movimiento más pragmático, se enfoca más en los beneficios prácticos como acceso al código fuente que en aspectos éticos o de libertad que son tan relevantes en el Software Libre. Su premisa es que al compartir el código, el programa resultante tiende a ser de calidad superior al software propietario, es una visión técnica. Obviamente para lograr calidad técnica lo ideal es compartir el código, pero no estás obligado a hacerlo. VENTAJAS DEL SOFTWARE LIBRE EN EL MUNDO DE LA SEGURIDAD El software libre deriva una serie de ventajas sobre el propietario, como lo son:  Al disponer del código fuente de los programas en su totalidad, éste puede ser analizado por terceras personas ajenas a sus autores en busca de fallos de diseño o de implementación. Es decir, cualquiera con los conocimientos necesarios puede realizar una auditoría del código del programa.  La posibilidad de realizar modificaciones libremente al código fuente y distribuirlas permite que cualquiera pueda ofrecer mejoras sobre éste. Estas mejoras podrán ser nuevas funcionalidades que se incorporen al mismo o parches que corrijan problemas detectados anteriormente.  Las características del software libre hacen que no sea lógico cargar costes sobre el software en sí (dado que se ha de distribuir sin cargo), lo que permite que este tipo de software pueda ser utilizado por organizaciones y personas con menos recursos económicos. Esto se presenta como una ventaja cuando se compara con los precios de lo que cuesta el software de seguridad propietario hoy en día (licencias de cortafuegos, vpns, sistemas de detección
  • 4. de intrusos, etc.). El software libre pone en manos de cualquiera el tipo de tecnología que, hoy por hoy, sólo podían tener grandes corporaciones.  De igual forma, la posibilidad de modificar libremente el software permite a las organizaciones que lo adapten a sus propias necesidades, pudiendo eliminar funcionalidades que no le sean de interés. En el mundo de la seguridad existe la máxima de “lo más sencillo es más seguro” por ello poder eliminar funciones innecesarias de las herramientas las puede convertir de forma inmediata en más seguras (porque no podrán ser utilizadas estas funcionalidades para subvertirlas). SEGURIDAD INFORMÁTICA Y EL USO DEL SOFTWARE LIBRE Habitualmente los usuarios no tienen en cuenta cuando hacen uso de los sistemas ya que ignoran los temas relacionados sobre la seguridad en internet en el trabajo o en las empresas, ya que las personas no consideran los tipos de seguridad lo toman como una molestia porque suele ir en contra de sus comodidades y facilidades los usuarios suelen tomar este tema de forma negativa lo consideran molesto porque algunas veces les impide la realización de un determinado trabajo porque encuentran tareas que le pueden resultar incomodas al recordar contraseñas por ejemplo por razones de memoria o rapidez les cuesta mucho recordad o ingresar claves cada vez que sea necesario. Pero hoy en día la seguridad es fundamental a la hora de proteger o afrontan tareas sobre sistemas de información de seguridad en el día, día de cada persona ya que la seguridad es una medida que permite garantizar cantidades de información que se requiera proteger para ciertas personas que intenten violar el acceso a aquello que pueda estar protegido. ¿Son necesarios los mecanismos de seguridad? Es necesario para tener privacidad en cuanto el intercambio de información porque sin darse cuenta esa información puede ir a parar en manos equivocadas o desconocidas o que otros violen dicha privacidad. Por otro lado, tampoco no se puede estar seguro de que el sistema que se esté conectado o usando resulte quien dice ser, no existe una certeza de los sistemas que se estén usando sean realmente auténticos o confiables, además no es solamente enviar o utilizar los sistemas es también adquirir productos que pueden ocasionar daños involuntarios por ejemplo virus espías que te pueden roban los archivos entre otros.
  • 5. Otro tema que es muy resaltante en la seguridad informática en el uso del software libre del cual ya se habló en ése trabajo, además de las ventajas del software libre en el mundo de la seguridad son fundamentales porque al disponer del código fuente cualquiera con los conocimientos necesarios puede realizar una auditoría del código del programa entonces quiere decir que cualquiera persona que tenga los conocimientos necesarios puede mejorar dicho programa, por su parte en el software propietario no se tiene acceso al código fuente, esto puede llevar que el fabricante tenga una sensación de seguridad y los usuarios tienen la necesidad de confiar totalmente en el fabricante. Por eso ahora se distribuye el software libre por su libre acceso se puede modificar libremente pero el software libre no está libre de desventajas no porque las posibilidades de generar más fácilmente los virus y también con la evolución futura los componentes del software no están seguros. ENCRIPTACIÓN Encriptación Es el proceso mediante el cual cierta información o texto sin formato es cifrado de forma que el resultado sea ilegible a menos que se conozcan los datos necesarios para su interpretación. Es una medida de seguridad utilizada para que al momento de almacenar o transmitir información sensible ésta no pueda ser obtenida con facilidad por terceros. Opcionalmente puede existir además un proceso de desencriptación a través del cuál la información puede ser interpretada de nuevo a su estado original, aunque existen métodos de encriptación que no pueden ser revertidos. El término encriptación es traducción literal del inglés y no existe en el idioma español. La forma más correcta de utilizar este término sería cifrado. Criptología Es la ciencia que estudia la transformación de un determinado mensaje en un código de forma tal que a partir de dicho código solo algunas personas sean capaces de recuperar el mensaje original. La mayoría de los algoritmos modernos del cifrado se basan en una de las siguientes dos categorías de procesos:  Problemas matemáticos que son simples pero que tienen una inversa que se cree (pero no se prueba) que es complicada
  • 6.  Secuencias o permutaciones que son en parte definidos por los datos de entradas. La primera categoría, que resume la mayoría de los métodos del cifrado de clave pública, sufre de la incapacidad de probar la dificultad de los algoritmos. El segundo método, que contiene a la mayoría de los códigos, sufre a menudo de correlaciones teóricas entre la entrada ("texto de entrada") y la salida ("texto cifrado"). Usos de la Encriptación Algunos de los usos más comunes de la encriptación son el almacenamiento y transmisión de información sensible como contraseñas, números de identificación legal, números de tarjetas de crédito, reportes administrativo-contables y conversaciones privadas, entre otros. Como sabemos, en un Sistema de Comunicación de Datos, es de vital importancia asegurar que la Información viaje segura, manteniendo su autenticidad, integridad, confidencialidad y el no repudio de la misma entre otros aspectos. Estas características solo se pueden asegurar utilizando las Técnicas de Firma Digital Encriptada y la Encriptación de Datos. Métodos de Encriptación Para poder Encriptar un dato, se pueden utilizar tres procesos matemáticos diferentes: 1. Algoritmo HASH: Este algoritmo efectúa un cálculo matemático sobre los datos que constituyen el documento y da como resultado un número único llamado MAC. Un mismo documento dará siempre un mismo MAC. 2. Criptografía de Clave Secreta o Simétrica: Utilizan una clave con la cual se encripta y desencripta el documento. Todo documento encriptado con una clave, deberá desencriptarse, en el proceso inverso, con la misma clave. Es importante destacar que la clave debería viajar con los datos, lo que hace arriesgada la operación, imposible de utilizar en ambientes donde interactúan varios interlocutores. 3. Algoritmos Asimétricos (RSA): Requieren dos Claves, una Privada (única y personal, solo conocida por su dueño) y la otra llamada Pública, ambas relacionadas por una fórmula matemática compleja imposible de reproducir. El concepto de criptografía de
  • 7. clave pública fue introducido por Whitfield Diffie y Martin Hellman a fin de solucionar la distribución de claves secretas de los sistemas tradicionales, mediante un canal inseguro. El usuario, ingresando su PIN genera la clave Publica y Privada necesarias. La clave Publica podrá ser distribuida sin ningún inconveniente entre todos los interlocutores. La Privada deberá ser celosamente guardada. Cuando se requiera verificar la autenticidad de un documento enviado por una persona se utiliza la Clave Publica porque el utilizó su Clave Privada. TLS (TRANSPORT LAYER SECURITY) El protocolo TLS (Transport Layer Security) es una evolución del protocolo SSL (Secure Sockets Layer), es un protocolo mediante el cual se establece una conexión segura por medio de un canal cifrado entre el cliente y servidor. Así el intercambio de información se realiza en un entorno seguro y libre de ataques. Normalmente el servidor es el único que es autenticado, garantizando así su identidad, pero el cliente se mantiene sin autenticar, ya que para la autenticación mútua se necesita una infraestructura de claves públicas (o PKI) para los clientes. Estos protocolos permiten prevenir escuchas (eavesdropping), evitar la falsificación de la identidad del remitente y mantener la integridad del mensaje en una aplicación cliente-servidor. Descripción Del Protocolo El protocolo SSL/TSL se basa en tres fases básicas:  Negociación: Los dos extremos de la comunicación (cliente y servidor) negocian que algoritmos criptográficos utilizarán para autenticarse y cifrar la información. Actualmente existen diferentes opciones:  Para criptografía de clave pública: RSA, Diffie-Hellman, DSA (Digital Signature Algorithm).  Para cifrado simétrico: RC2, RC4, IDEA (International Data Encryption Algorithm), DES (Data Encryption Standard), Triple DES o AES (Advanced Encryption Standard).  Con funciones hash: MD5 o de la familia SHA.  Autenticación y Claves: Los extremos se autentican mediante certificados digitales e intercambian las claves para el cifrado, según la negociación.  Transmisión Segura: los extremos pueden iniciar el tráfico de información cifrada y autentica.
  • 8. Objetivos Del Protocolo TLS Los objetivos del protocolo son varios:  Seguridad criptográfica. El protocolo se debe emplear para establecer una conexión segura entre dos partes.  Interoperabilidad. Aplicaciones distintas deben poder intercambiar parámetros criptográficos sin necesidad de que ninguna de las dos conozca el código de la otra.  Extensibilidad. El protocolo permite la incorporación de nuevos algoritmos criptográficos.  Eficiencia. Los algoritmos criptográficos son costosos computacionalmente, por lo que el protocolo incluye un esquema de cache de sesiones para reducir el número de sesiones que deben inicializarse desde cero (usando criptografía de clave pública). Funcionamiento Del Protocolo TLS El protocolo está dividido en dos niveles:  Protocolo de registro TLS (TLS Record Protocol).  Protocolo de mutuo acuerdo TLS (TLS Handshake Protocol). El de más bajo nivel es el Protocolo de Registro, que se implementa sobre un protocolo de transporte fiable como el TCP. El protocolo proporciona seguridad en la conexión con dos propiedades fundamentales:  La conexión es privada. Para encriptar los datos se usan algoritmos de cifrado simétrico. Las claves se generan para cada conexión y se basan en un secreto negociado por otro protocolo (como el de mutuo acuerdo). El protocolo también se puede usar sin encriptación.  La conexión es fiable. El transporte de mensajes incluye una verificación de integridad. El Protocolo de mutuo acuerdo, proporciona seguridad en la conexión con tres propiedades básicas:  La identidad del interlocutor puede ser autentificada usando criptografía de clave pública. Esta autentificación puede ser opcional, pero generalmente es necesaria al menos para uno de los interlocutores.  La negociación de un secreto compartido es segura.
  • 9.  La negociación es fiable, nadie puede modificar la negociación sin ser detectado por los interlocutores. AUTENTICACION JWT Una funcionalidad que casi no puede faltar cuando estamos desarrollando una aplicación web Java moderna (por ejemplo nuestra startup), es la autenticación de usuarios, esto puede implementarse usando los mecanismos estándar provistos por Java EE o siguiendo la tendencia actual de integración con los servicios de autenticación de las redes sociales más conocidas, los famosos botones login with Facebook/Google/Twitter ... entre otros. La intención de este post es conocer sobre la autenticación con JSON Web Tokens y entender en que se diferencia y porque en algunos escenarios, es más beneficiosa que los métodos tradicionales de autenticación web. Adicionalmente como ejemplo práctico crearemos una aplicación web Cloud Friendly con Spring-Boot, AngularJs, MongoDB y la librería open source de autenticación con JSON Web tokens Satellizer la cual incluye soporte para Java y javascript, en esta aplicación nos integraremos con la autenticación OAuth de Facebook y Google. Autenticación tradicional en las aplicaciones Web Java Los mecanismos tradicionales de autenticación de usuarios en las aplicaciones Web funcionan de la siguiente manera: Cuando un usuario se da de alta en un sitio, el nombre de usuario y pasabordo se comparan con una entrada en un almacenamiento persistente de información, como una base de datos relacional, si la información concuerda, en la memoria del servidor se almacena el estado de autenticación del usuario y se envía de vuelta un cookie que en la mayoría de los casos contiene el id de usuario, o el id de la sesión. El browser por su parte almacenará el cookie para el dominio de donde viene y automáticamente la enviara de regreso en cada petición futura. Este mecanismo funciona bien en muchos escenarios, de hecho una gran cantidad de aplicaciones web de hoy día funcionan de esta manera. Sin embargo, vamos a ver ahora como ciertas características de las aplicaciones web modernas hacen que usar estos mecanismos sea todo un desafío. Un gran desafío: La necesidad de escalar horizontalmente Las aplicaciones web modernas ya no se despliegan en un único servidor, para manejar altos volúmenes de usuarios concurrentes con baja latencia y alta disponibilidad, la aplicación debe ser distribuida en varios servidores, lo cual tiene
  • 10. como efecto que cuando un usuario accede a la aplicación no se garantice que siempre acceda al mismo servidor. Conociendo que la autenticación tradicional se basa en almacenamiento de estado de la memoria del servidor, en una arquitectura como esta, un usuario estaría autenticado en un servidor pero no en los demás. Para solucionar esto, se tiene la alternativa de replicar en tiempo real los datos de sesión en todos los servidores, o usar Sticky sessions. Sticky sessions, es un mecanismo donde se crea afinidad entre el usuario y el servidor donde inicialmente se autenticó, de manera que las peticiones del usuario siempre son enrutadas al servidor donde se dio de alta inicialmente. Ninguno de estos dos mecanismos funciona bien en la arquitectura de las aplicaciones web modernas. AUTENTICACIÓN STATELESS CON JSON WEB TOKENS Para enfrentar los desafíos mencionados, afortunadamente existe como alternativa la autenticación basada en tokens, usando JSON Web tokens(JWT) para autenticación. Un JWT es una estructura JSON codificada que contiene tres partes: 1. Header Es información en formato JSON que contiene el tipo y la codificación utilizada, la información se codifica en Base64URL. Información JSON sin codificar: { "typ": "JWT", "alg": "HS256 } 2. Payload El Payload contiene cualquier información importante para la aplicacion en la forma de Claims. El id del usuario debe ser enviado como un sub claim, pero adicionalmente cual otra información importante como nombre de usuario, email y otros puede ser incluido. El Payload también está codificado en Base64URL. { "sub":"64a8c8e91b07892bsn42965e2f9", "exp":1300819380, "email":"user@mail.com" }
  • 11. 3. Signature La signature es usada para verificar la autenticidad del JWT, básicamente está compuesta la información del Header y Payload cifrados en Base64 con una clave secreta (almacenada en nuestro backend). Existen diferentes algoritmos que pueden ser usadas para la firma (HMAC, RSA). Desde la perspectiva del usuario, darse de alta en una aplicación que usa JWT, no tiene diferencia con una aplicación con autenticación tradicional. El usuario ingresa sus credenciales, el servidor las verifica contra un almacenamiento o servicio, pero en lugar de crear una sesión y retornar un cookie, retornará un objeto JSON que contienen un JWT. Del lado del cliente el JWT necesita ser almacenado, lo cual se hace normalmente en el almacenamiento local. El JWT debe ser enviado al servidor para acceder rutas protegidas, y generalmente es enviado en un Header HTTP de autorización. Los servicios en el API o ruta protegida esperan y chequean un JWT válido, y si hay uno, procesarán la petición y retornará la respuesta esperada. Dado que la información del usuario está contenida dentro del JWT, no hay necesidad de validar el usuario en la base datos, lo cual disminuye la latencia de la aplicación. Resaltaremos que el estado del usuario nunca es almacenado en la memoria del servidor, lo cual significa que el usuario no está autenticado en el sentido tradicional. Sin embargo, un JWT válido le da al usuario la llave para acceder a los datos cada vez que hace una petición, de esta manera es implementada la autenticación sin estado. MIDDLEWARE'S Los middleware, son funciones que nos permiten agregar filtros a cada petición HTTP realizada por un usuario en una aplicación. La finalidad de este componente es disminuir la carga de trabajo en los controladores y proporcionar una solución mucho más simple y estándar a la hora de aplicar las restricciones necesarias en el proyecto. La versatilidad de los middleware te permite agregar restricciones por zona horaria, geolocalización, login, edad, genero, rol o tipo de usuario, y básicamente todo lo que quieras. esto te permite bloquear acceso a ciertas áreas de tu aplicación para un usuario o un grupo de usuarios en específico.