1. INTRODUCCION A LA
SEGURIDAD
Iniciamos la descripción de
la seguridad en sistemas distribuidos con el repaso de algunos temas generales
de seguridad. En primer lugar, es necesario definir que es un sistema seguro.
Se distinguen las politicas de seguridad de los mecanismos de seguridad, y se
estudia un sistema de area amplia Globus para el cual a sido formulada
explicitamente una politica de seguridad. En segundo lugar, se consideran
algunos temas de diseño generales sobre sistemas seguros. Por último, se
analizan algunos algoritmos criptográficos, los cuales desempeñan un rol
primordial en el diseño de protocolos de seguridad.
1.1. Amenazas, Mecanismos y Políticas de
Seguridad
En
un sistema de computadora, la seguridad está fuertemente relacionada con la
noción de confiabilidad. La confiabilidad incluye disponibilidad, consistencia,
seguridad, y sustentabilidad. Sin embargo, si se va a confiar en un sistema de
computadora, entonces la confidencialidad y la integridad también deberán ser
tomadas en cuenta. Confidencialidad se refiere a la propiedad de un sistema de
computadora mediante la cual su información se pone sólo al alcance de personas
autorizadas. La integridad es la característica de que las modificaciones de
los activos de un sistema sólo pueden hacerse en una forma autorizada. Es
decir, en un sistema de computadora seguro, las modificaciones inapropiadas
deben ser detectables y recuperables. Los activos principales de cualquier
sistema de computadora se encuentran en su equipo físico, sus programas, y sus
datos .
Existen
cuatro tipos de amenazas de seguridad a considerar:
- Intercepción: Se refiere a la situación en la que una persona no autorizada ha logrado acceder a los servicios o datos.
- Interrupcion: Se refiere a la situación en que los servicios o datos ya no estan disponible, se inutilizan o destruyen y así sucesivamente.
- Modificación: Implica el cambio no autorizado o la manipulación de un servicio de tal forma que ya no se adhiera a sus especificaciones originales.
- Fabricación: Se refiere a la situación en que se generan datos o actividades adicionales que normalmente no existirían.
Una
politica de seguridad describe con precisión que acciones le estan permitidas a
las entidades de un sistema y cuáles están prohibidas. una vez delimitadas las políticas de seguridad, es posile concentrarse en el mecanismo de seguridad mediante el cual puede ser aplicada. Mecanismos de seguridad importantes son:
- Cifrado: Es fundamental para la seguridad de una computadora.
- Autenticación: Se utiliza para verificar la identidad pretendida de un usuario, cliente, servidor, anfitrión u otra entidad.
- Autorización: Se realiza después que un cliente ha sido autentificado, ya que es necesario verificar si está autorizado para realizar la acción solicitada
- Auditoría: Se utiliza para rastrear a que tuvieron acceso los clientes y de que forma lo hicieron .
Ejemplo: la
arquitectura de seguridad Globus
1.2.
Temas de diseño
Un sistema distribuido, o cualquier sistema de computadora, debe
proporcionar servicios de seguridad mediante los cuales pueda ser implementada
una amplia gama de políticas de seguridad. Existen varios temas de diseño
importantes que deben ser tomados en cuenta cuando se implementen servicios de
seguridad para propósitos generales. Analizaremos tres de estos temas: enfoque
del control, organización en capas de los mecanismos de seguridad, y
simplicidad.
·
Enfoque de Control: Cuando se considera la protección de una aplicación, existen
basicamente tres métodos diferentes: El primer método consiste en concentrarse
directamente en la protección de los datos asociados con la aplicación. El
segundo método es concentrarse en la protección al especificar con exactitud
qué operaciones pueden ser invocadas, y por quién, cuando tenga que accederse a
ciertos datos o recursos. Un tercer método es enfocarse directamente en los
usuarios tomando medidas por las cuales sólo personas específicas tienen acceso
a la aplicación, independientemente de las operaciones que deseen realizar.
·
Organización en Capas de los Mecanismos de Seguridad: Un tema
importante al diseñar sistemas seguros es decir en qué nivel deben ser
colocados los mecanismos de seguridad. En este contexto un nivel está
relacionado con la organización lógica de un sistema en varias capas.
- Distribución
de los Mecanismos de Seguridad: Las
dependencias entre los servicios en cuanto a confianza conducen a la
noción de una Trusted Computing Base (TCB). Una TCB es el conjunto de
todos los mecanismos de seguridad implementados en un sistema de
computadoras (distribuido) que son necesarios para hacer cumplir una
política de seguridad, y que por tanto tiene que ser confiable.
- Simplicidad:
El diseño de un sistema de computadora seguro se considera generalmente
como una tarea dificil. Por consiguiente, si el diseñador de un sistema
utiliza pocos mecanismos simples faciles de entender y confiables de
trabajar, mucho mejor.
1.3.
Criptografia
Es fundamental para la seguridad de sistemas distribuidos. La idea
básica de aplicar estas técnicas es simple. Consideremos un remitente S que
desea transmitir un mensaje m a un destinatario R. Para proteger el mensaje
contra amenazas de seguridad, el remitente primero lo cifra para transformarlo
en un mensaje ininteligible m´ y posteriormente envía m´a R. R a su vez debe
descifrar el mensaje recibido para regresarlo a su forma original m.
·
Criptosistemas Simétricos
(DES): Se diseñó para operar con
bloques de 64 bits. Un bloque se transforma en un bloque de salida de 64 bits
en 16 rondas, donde cada ronda utiliza una clave diferente de 48 bits de
cifrado. Cada una de estas 16 claves se deriva de una clave maestra de 56 bits.
Un ejemplo de algoritmo Criptográfico es el Data Encryption Standard ( DES).
·
Criptosistemas de clave publica
(RSA): La seguridad de RSA se deriva de
que no se conocen métodos para calcular con eficiencia los factores primos de
números grandes. Es posible demostrar que cada entero puede ser escrito como el
producto de números primos. En RSA las claves privadas y públicas se construyen
con números primos muy grandes.
·
Funciones Hash (MD5): MD5 es una funcion Hash útil para calcular un resumen
de mensaje de longitud fija de 128 bits tomado de una caddena de entrada
binaria de longitud arbitraria. La cadena de entrada se rellena primero hasta
una longitud total de 448 bits (modulo 512), después de lo cual la longitud de
la cadena de bits original se rellena con un entero de 64 bits. En realidad, la
entrada se convierte en una serie de bloques de 512 bits.
2. CANALES
SEGUROS
En este modelo los servidores posiblemente pueden ser distribuidos
o replicados aunque también actúan como cliente con respecto a los demás
servidores. En partícular, implementar un sistema distribuido se reduce
esencialmente en dos temas predominantes.
El primero es como hacer segura la comunicación entre cliente – servidor
y el segundo tema es la autenticación.
2.1. Autenticación
Primeramente vale la pena señalar que la autenticación y la
integridad de los mensajes no se pueden realizar una sin la otra, por
consiguiente la autenticación y la integridad del mensaje deben ir de la mano.
Supongamos que Bob y Alicia desean comunicarse y que Alicia toma la iniciativa
al establecer un canal, Alicia envía un mensaje a Bob o de lo contrario a una
tercera parte confiable que le ayudara establecer el canal. Una vez que el
canal ha sido establecido Alicia sabe que esta hablando con Bob y este sabe con
toda seguridad que esta hablando con Alicia y así pueden intercambiar mensajes.
·
Autenticación Basada en una Clave Secreta Compartida: Primero
daremos un vistaso a un protocolo de autenticación basado en una clave secreta
que ya comparten Alicia y Bob. En la descripción del protocolo, Alicia y Bob se
abrevian A y B, respectivamente y su clave compartida es denotada como KA,B.
El protocolo adopta un metodo común mediante el cual una parte reta a la otra a
que responda correctamente sólo si la otra parte conoce conoce la clave secreta
compartida.
·
Autenticación Mediante un Centro de Distribución de Clave: Uno de los
problemas que se presenta con el uso de la clave secreta compartida para
autenticación es su escalabilidad. Una alternativa es utilizar un método
centralizado por medio de un centro de distribución de clave (KDC, por sus
siglas en ingles). Este KDC comparte una clave secreta con cada uno de los
servidores, pero no se requiere que ningún par de ellos tenga también una clave
secreta compartida.
·
Autenticación con Criptografía de Clave Publica: Abordaremos
la autenticación con un criptosistema de clave publica que no requiere un
KDC. De nueva cuenta, consideramos la situación en que Alicia desea establecer
un canal seguro con Bob, y que ambos poseen la clave publica del otro.
2.2.
Integridad y Confidencialidad del Mensaje
Integridad del mensaje significa que los mensajes están protegidos
contra modificaciones subrepticias, la confidencialidad asegura que los
mensajes no pueden ser interceptados o leídos por fisgones. La confidencialidad
es fácil de establecer simplemente con cifrar un mensaje antes de enviarlo. El
cifrado puede tener lugar o mediante una clave secreta compartida con el
destinatario o alternativamente con la clave pública del destinatario.
·
Firmas Digitales: La integridad de un mensaje a menudo va más allá de la
transferencia a través de un canal seguro. La asociación única entre un mensaje
y su firma evita que las modificaciones pasen inadvertidas. Además si la firma
el que envia el mensaje puede ser verificada como genuina, luego no podrán
decir que no firmo el mensaje. Existen varias formas de colocar firmas
digitales. Una muy popular es utilizar un critosistema de clave pública tal
como RSA.
·
Claves de Sesión: Durante el establecimiento de un canal seguro, una vez completada
la fase de autenticación las personas que se están comunicando utilizan por
confidencialidad una clave única de sesión compartida. La clave de sesión se
desecha en forma segura cuando cuando el canal ya no se utiliza. Una
alternativa seria utilizar las mismas claves para confidencialidad que las
utilizadas para establecer el canal seguro.
2.3. Comunicación Segura de un Grupo
2.3. Comunicación Segura de un Grupo
En
sistemas distribuidos sin embargo a menudo es necesario habilitar la
comunicación segura entre dos partes un ejemplo típico es el de un servidor
replicado donde toda la comunicación entre las réplicas deberá protegerse
contra modificación, fabricación, e intercepción.
·
Comunicación Confidencial de un Grupo: Para
garantizar la confidencialidad, un esquema simple es que todos los miembros del
grupo compartan una clave secreta, la cual se utiliza para cifrar y descifrar
todos los mensajes transmitidos entre los miembros del grupo. Como en este
esquema todos los miembros comparten la clave secreta, es necesario confiar en
que la conservarán secreta.
·
Servidores Replicados Seguros: La
esencia de los servidores replicados transparentes radica en lo que se denomina
compartimiento de un secreto. la ventaja de este esquema es que. como los
clientes desconocen las replicas existentes, resulta mucho más fácil agregar o
eliminar réplicas en forma segura. Cuando multiples usuarios (o procesos)
comparten un secreto, ninguno de ellos conoce el secreto completo.
2.4.
Ejemplo Kerberos
Kerberos se desarrolló en el MIT y está basado en el protocolo de
autenticación de Needham-Schroeder.
kerberos puede ser visto como un sistema de seguridad que ayuda a
los clientes a establecer un canal seguro con cualquier servidor que forme
parte de un sistema distribuido. La seguridad está basada en claves secretas
compartidas.
3. CONTROL DE ACCESO
En el modelo cliente – servidor el cual se ha
utilizado hasta ahora una vez que el cliente y el servidor establecen un canal
seguro el cliente puede emitir peticiones que deben ser ejecutadas por el servidor.
Las peticiones implican realizar operaciones en recursos controlados por el
servidor. Una situación general es la de un servidor objetos que tiene varios
objetos bajo su control. Una petición del cliente implica por lo general
invocar un método de un objeto específico. Tal petición puede ser realizada
solo si el cliente tiene derechos de acceso suficientes para conseguir dicha
invocación.
3.1.
Temas Generales de Control de Acceso
Para entender los diversos temas implicados en el control de
acceso, en general se adopta un modelo simple. este modelo consta de sujetos
que emiten una petición de acceso a un objeto. Las operaciones de un objetos
que los sujetos pueden solicitar se realicen están disponibles mediante
interfaces. Los sujetos pueden ser considerados mejor como procesos que actuan
a nombre de los usuarios, aunque tambien pueden ser objetos que necestan los
servicios de otros objetos para realizar su propio trabajo.
·
Matriz de Control de Acceso: Un
metodo común usado para modelar los derechos de acceso de sujetos con respecto
a objetos es construir una matriz de control de acceso. En esta matriz, cada
sujeto esta representado por una fila y cada objeto por una columna. Si consideramos
que un sistema fácilmente puede necesitar dar soporte a miles de usuarios y que
millones de objetos requieren protección, implementar una matriz de control de
acceso como matriz verdadera, no es la forma correcta de proceder. Muchas
entradas de la matriz estarán vacias: en general, un solo sujeto tendrá acceso
a relativamente pocos objetos. Por consiguiente , se siguen otras formas más
eficientes para implementar una matriz de control de acceso. Un metodo
ampliamente aplicado es hacer que cada objetos mantenga una lista de derechos
de acceso de sujetos que deseen acceder a él. Otro metodo es distribuir la
matriz en filas dando a cada sujeto una lista de las capacidades que tiene por
cada objeto.
·
Domínios de Protección: Son
conjunto de pares (objeto, derecho de acceso). Para un objeto dado, cada par
especifica con exactitud que operaciones pueden realizarse. Las peticiones para
realizar una operación siempre se emiten dentro de un dominio. Por
consiguiente, siempre que un sujeto solicita realizar una operación en un
objeto, el monitor de referencia busca primero el dominio de protección
asociado a dicha petición. Acto seguido, dado el dominio, el monitor de
referencia puede verificar si la petición tiene permiso de ser realizada.
3.2. Cortafuegos (Firewall)
Las
cosas se complican más cuando se permite el acceso a extraños a los recursos
controlados por un sistema distribuido ejemplo de tales accesos incluyen envío
de correos, descarga de archivos, carga de formas fiscales, etc.
Para
proteger los recursos en estas circunstancias se requieren de un método
diferente. En esencia el cortafuego desconecta cualquier parte de un sistema
distribuido del mundo externo, todos los paquetes salientes pero sobre todos
los entrantes se canalizan a través de una computadora especial y se
inspeccionan antes de permitirles el paso, el tráfico no autorizado se desecha
y no se le permite continuar.
3.3.
Código Móvil Seguro
Un desarrollo importante en sistemas distribuidos modernos es la
capacidad de migrar el código entre servidores en lugar de solo migrar datos
pasivos. Sin embargo el móvil introduce varias amenazas de seguridad serias.
Entre otras cosas cuando se envía un agente a través de interne su propietario
desea protegerse contra servidores malévolos que traten de robarse o modificar
la información transportada por el agente.
·
Protección de un Agente: Antes de considerar la protección de un sistema de computadora
contra un codigo malicioso desacargado, primero veamos la situacion opuesta.
Consideremos un agente movil que transita por un sistema distribuido a nombre
de un usuario. Tal agente puede estar buscando el boleto de avión más barato de
Nairobi a Malindi y ha sido autorizado por su propietario para que haga una
reservación en cuanto encuentre el vuelo. Con este proposito el agente puede
portar una tarjeta de credito electronica. Desde luego en este caso se requiere
protección. Siempre que el agente entre a un servidor, éste no tendrá permiso
de robar la información de la tarjeta de credito del agente.
·
Proteccion del Destino: Aunque proteger un agente contra modificaciones
puede ser imposible, por lo menos es posible que el propietario del agente
detecte que se hicieron modificaciones. En el peor de los casos, el propietario
tendrá que rechazar al agente cuando regresa, pero de otro modo ningun daño
habrá sido hecho. No obstante, cuando hay que haberselas con agentes
maliciosos, no sirve de nada detectar que los recuersos han sido hostigados. En
su lugar, es esencial proteger todos los recuersos contra acceso no autorizado
por medio de un codigo descargado. Una forma de protección es construir una
caja de arena.
3.4.
Negación de Servicio
el control de acceso se refiere en general a garantizar en forma
prudente que los recursos sean accesados sólo por procesos autorizados. Un tipo
de ataque particularmete molesto relacionado con el control de acceso es evitar
de modo malicioso que procesos autorizados accedan a recursos. Defensa contra
tales ataques de negación de servicio (DoS, del ingles denial of service) se
vuelven cada vez más importantes ya que los sitemas distribuidos se encuentran
abiertos en internet. Cuando los ataques DoS provienen de una o varias fuentes,
a menudo pueden ser manejados con efectividad. Las cosas llegan a ser más
dificiles cuando se trta de una Negación de servicios distribuidos (DDoS). En
ataques DDoS, una enorme colección de procesos intenta anular conjuntamente un
servicio distribuido en red. En este caso, los ataques a menudo tienen exito al
secuentrar un gran grupo de maquinas que sin saber paticipan en el ataque.
En esta sección examinamos más afondo la administración de la
seguridad, se distinguen tres temas diferentes. Primero, se tiene que
considerar la administración general de claves criptograficas, y en especial la
forma que se distribuyen las claves publicas. En segundo lugar, abordamos el
problema de administrar con seguridad un grupo de servidores concentrandonos en
el problema de agregar un nuevo miembro confiable para los miembros actuales.
En tercer lugar, consideramos la administración de la autorización atendiendo
las capacidades y lo que se conoce como certificados de atributos.
4.1.
Administración de Claves
El establecimiento y la distribución de claves no es un asunto
trivial. Por ejemplo la distribución de claves secretas por medio de un canal
inseguro es impensable y en muchos casos se tiene que recurrir a métodos que no
están disponibles, también se requieren mecanismo para revocar las claves es
decir para que una clave sea utilizada una vez que ha sido comprometida o
invalidada.
·
Establecimiento de Claves: Primero consideremos como se pueden establecer claves sesión. Un
esquema elegante y ampliamente utilizado para establecer una clave compartida a
través de un canal inseguro es el intercambio de claves de Diffie-Hellman.
- Distribución
de Claves: Una de las partes más dificiles
de realizar en la administración de claves es la distribución de las
claves iniciales. En un criptosistema simetrico, la clave secreta
compartida inicial debe ser comunicada a travéz de un canal seguro que
proporcione autenticación y confidencialidad. En el caso de un
criptosistema de clave pública, la clave pública tiene que ser distribuida
en tal forma que los destinatarios estén seguros de que sí está pareada
con una clave secreta. Cuando se trata de distribución de claves, la
distribución autenticada de claves públicas es talvez la más interesante.
·
Duración de
los Certificados: Un tema
importante relacionado con los certificados es su longevidad. En primer
término, consideremos la situación en que una autoridad certificadora entrega
certificados de por vida. En esencia, lo que el certificado manifiesta es que
la clave publica siempre será valida para la identidad identificada por el
certificado. Claramente, esta manifestación no es desable. Si alguna vez se
compromete la clave privada de la entidad identificada, un cliente poco
sospechoso jamás deberá ser habilitado para utlizar la clave pública (mucho
menos los clientes maliciosos). En ese caso se requiere de un mecanismo útil
para revocar el certificado haciendo que se sepa que ya no es valido.
4.2
Administración de un Grupo Seguro
Estos servicios ponen de manifiesto una dificultad presente en los
sistemas distribuidos. Por principio de cuentas deben ser confiables. Para
acrecentar la confianza en los servicios de seguridad, es necesario
proporcionar un alto grado de protección contra toda clase de amenaza, por otra
parte también es necesario que muchos servicios de seguridad ofrezcan una
disponibilidad elevada.
4.3.
Administración de la autorización
En sistemas no distribuidos administrar los derechos de acceso es
relativamente fácil, cuando se agrega un nuevo usuario al sistema se le otorga
derechos iniciales como crear archivos y subdirectorios en un directorio
especifico, crear procesos y así sucesivamente.
En sistemas distribuidos las cosas se complican por el hecho de
que los recursos están ubicados en varias máquinas, si se tuviera que seguir el
método para sistemas no distribuidos sería necesario crear una cuenta para cada
usuario en cada máquina. En esencia este es el método que se sigue en sistemas
operativos de red.
·
Capacidades y
Certificados de Atributos: Un metodo
mucho mejor, y que se aplica ampliamente en sistemas distribuidos, es el uso de
capacidades. Una capacidad es una estructura de datos infalsificable, para un
recurso determinado, que especifica con exactitud los derechos de acceso que el
portador de la capacidad tiene con respecto a dicho recuerso. Existen
diferentes implementaciones de capacidades como el sistema operativo Amoeba.
·
Delegación: La delegación de derechos de acceso es una
tecnica importante de protección de sistemas de computadoras y de sistemas
distribuidos, en particular. La idea basica es simple: traspasando ciertos
derechos de acceso de un proceso a otro, se facilita la distribución del
trabajo entre varios procesos sin afectar adversamente la protección de los
recursos. en el caso de los sistemas distribuidos, los procesos pueden ser
ejecutados en maquinas diferentes e incluso dentro de dominios administrativos
diferentes, como el caso de Globus. La delegación evita muchos gastos
indirectos ya que a menudo la protección puede ser manejada locamente.
que es mejor el sistema RSA o el DES?
ResponderBorrarEl RSA no es una alternativa del DES ni lo reemplaza, mejor dicho, lo complementa y se utiliza junto con el DES para crear un medio seguro de comunicaciones.
BorrarSe podría preguntar el motivo por el cual no se utiliza el sistema RSA para encriptar el mensaje directamente y así evitar el uso del DES. Aunque podría aplicarse a mensajes cortos, el DES (u otro sistema de encriptado) es preferible en el caso de un mensaje largo ya que es mucho más veloz que el RSA.
BorrarEn términos de seguridad: ¿Es mejor utilizar un algoritmo asimétrico con clave de 16 bits o un algoritmo simétrico con clave de 1024 bits?
ResponderBorrarEl simétrico, porque si un atacante decide romper la seguridad tendría que realizar (2^1025)-1 operaciones para encontrar la clave correcta, con esto sabemos que la clave es mas larga y por lo tanto mas segura y para el asimétrico se factorizan los 16 bits.
Borrar¿Se utiliza hoy en día el sistema RSA?, si es así, ¿en donde?
ResponderBorrarLa utilización del sistema RSA está experimentando una rápida expansión y puede llegar a ser omnipresente en los próximos años. Hoy en día, se utiliza en una gran variedad de productos, plataformas e industrias del mundo entero. Se encuentra en productos comerciales de software y se planea una expansión mayor. RSA está incluido en sistemas Microsoft, Apple, Sun y Novell actuales y futuros. En cuanto al hardware, el sistema RSA se puede encontrar en teléfonos seguros, en tarjetas de redes Ethernet y en tarjetas inteligentes. El RSA se utiliza también en muchos organismos estatales estadounidenses, grandes compañías, laboratorios y universidades.
BorrarQue es lo que se quiere proteger con la seguridad?
ResponderBorrarLos tres elementos principales a proteger en cualquier sistema informático son el software, el hardware y los datos.
Borrar