View
41
Download
0
Category
Preview:
Citation preview
TENDENCIAS DE LA INFORMÁTICA Y SU INCIDENCIA EN LA SEGURIDAD.
SEGURIDAD VS SOFTWARE LIBRE
SOFTWARE LIBRE
• En general se entiende como software libre aquel programa o conjunto de ellos de los que el usuariopuede disponer del código fuente, sin restricciones, y el cual puede modificar y redistribuir también sinrestricciones.
SOFTWARE LIBRE
• Existen diversos esquemas de distribución Software libre
Software de código abierto (Open Source)
Software de Dominio publico
Software con copyleft
Software privativo
Software comercial
SOFTWARE LIBRE
• Los usuarios tienen la libertad de ejecutar, copiar, distribuir, estudiar, modificar y mejorar el software,gratuitamente o mediante pago.
• En particular, esto significa que el código fuente debe estar disponible. Si no es fuente, no es software.
SOFTWARE LIBRE
• Un programa es software libre si los usuarios tienen las cuatrolibertades esenciales:
1. La libertad de ejecutar el programa como se desea, con cualquier propósito.
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.
3. La libertad de redistribuir copias para ayudar a su prójimo.
4. La libertad de distribuir copias de sus versiones modificadas a terceros. Esto le permite ofrecer atoda la comunidad la oportunidad de beneficiarse de las modificaciones. El acceso al código fuentees una condición necesaria para ello.
SOFTWARE LIBRE
• Ventajas del Software Libre en el mundo de la seguridad:
Disponer del código fuente de los programas en su totalidad
Posibilidad de realizar modificaciones libremente al código fuente y distribuirlas
SOFTWARE LIBRE Ó OPEN SOURCE
• Es el software cuyo código fuente y otros derechos que normalmente son exclusivos para quienesposeen los derechos de autor, son publicados bajo una licencia de software compatible con la OpenSource Definition o forman parte del dominio público.
• Es un movimiento pragmático, que se enfoca más en los beneficios prácticos como acceso al códigofuente.
SOFTWARE LIBRE Ó OPEN SOURCE
• Se focaliza más en los beneficios prácticos (acceso al código fuente) que en cuestiones éticas o delibertad que tanto se destacan en el software libre. Para muchos el término «libre» hace referencia alhecho de adquirir un software de manera gratuita, pero más que eso, la libertad se refiere al podermodificar la fuente del programa sin restricciones de licencia, ya que muchas empresas de softwareencierran su código, ocultándolo y restringiéndose los derechos a sí misma.
SOFTWARE LIBRE Ó OPEN SOURCE
• Diferencias: El Software Libre hace hincapié en cuestiones éticas y morales relacionadas con el software.
Una aplicación desarrollada bajo los estándares del Software Libre puedes obtener remuneración porconceptos de desarrollo, soporte y puesta a punto siempre y cuando entregues los fuentes.
SOFTWARE LIBRE Ó OPEN SOURCE
• La idea bajo el concepto de código abierto es sencilla: cuando los programadores (en Internet) puedenleer, modificar y redistribuir el código fuente de un programa, éste evoluciona, se desarrolla y mejora.Los usuarios lo adaptan a sus necesidades, corrigen sus errores con un tiempo de espera menor a laaplicada en el desarrollo de software convencional o cerrado, dando como resultado la producción deun mejor software.
VENTAJAS DEL SOFTWARE LIBRE EN EL MUNDO DE LA SEGURIDAD
• 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.
• La posibilidad de realizar modificaciones libremente al código fuente y distribuirlas permite que cualquiera pueda ofrecer mejoras sobre éste.
• 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.
• 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
Aunque no se pueda asegurar que el código esté carente de errores, si es posible garantizar que tantas posibilidades tiene de encontrar un fallo de programación en éste (que lleve implícito un riesgo de
seguridad) un atacante externo como la organización lo utilice.
MECANISMOS DEL SOFTWARE LIBRE DE PROTECCIÓN A SUS USUARIOS
Muchos de los proyectos de software libre, entre ellos el núcleo de Linux, el proyectoApache, y la distribución OpenBSD realizan auditorías del código para asegurar suintegridad, seguridad y ajuste a las especificaciones de funcionalidades requeridas.
El hecho de que exista una cierta independencia entre el software y sufabricante, o distribuidor original, permite que los usuarios de este software, encaso de pérdida de soporte, puedan realizar el mantenimiento de éste ellosmismos o subcontratarlo a una tercera empresa.
La auditoría que se pueda realizar a sistemas operativos libres, como es el casode GNU/Linux o BSD, la aplicación de los resultados o no se realiza mediante unadiscusión pública y es el propio resultado de la auditoría el que debe valer por simismo para su introducción o no.
Proceso mediante el cual cierta información o texto sin formato es
cifrado de forma que el resultado sea ilegible e imposible de
interpretar.
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 des-
encriptación.
La encriptación forma parte de la criptología.
Ciencia que estudia la transformación de un mensaje en un código
de forma 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 que es complicada.
Secuencias o permutaciones que son en parte definidos por los
datos de entradas.
Se pueden utilizar tres procesos matemáticos diferentes:
Algoritmo HASH: Efectúa un cálculo matemático sobre los
datos que constituyen el documento y da como resultado
un número único llamado MAC.
Criptografía de Clave Secreta o Simétrica: Utilizan una
clave con la cual se encripta y desencripta el documento.
Es importante destacar que la clave debería viajar con los
datos, lo que hace arriesgada la operación.
Algoritmos Asimétricos (RSA): Requieren dos Claves, una
Privada (única y personal) y la otra Pública, ambas
relacionadas por una fórmula matemática compleja
imposible de reproducir.
Protocolo para envío de información encriptada entre el cliente y el
servidor.
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.
Estos protocolos permiten prevenir escuchas, evitar la falsificación
de la identidad del remitente y mantener la integridad del mensaje en
una aplicación cliente-servidor.
Negociación: Los dos extremos de la comunicación 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.
Para cifrado simétrico: RC2, RC4, IDEA, DES, Triple DES o AES.
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.
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).
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.
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.
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.
2.Payload: El Payload contiene cualquier información importante para la
aplicación 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.
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).
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,
login, edad, genero, rol o tipo de usuario, etc. esto te permite bloquear acceso a
ciertas áreas de tu aplicación para un usuario o un grupo de usuarios en específico.
Recommended