Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIDAD IV
SEGURIDAD Y PROTECCION
INTRODUCCION
La protección se refiere a un mecanismo para controlar el acceso de: los programas, procesos o
usuarios a los recursos definidos por un sistema de computación. Este mecanismo debe permitir
especificar los controles que se impondrán, y debe contar con alguna forma de hacerlos cumplir. La
seguridad en cambio, no solo requiere un sistema de protección apropiado, sino también considerar el
entorno externo en el que el sistema opera. La protección interna no es útil si la consola del operador
está al alcance de personal no autorizado, o si los archivos (almacenados, por ejemplo, en cintas y
discos) se pueden sacar simplemente del sistema de computación y llevarse a un sistema sin
protección. Estos problemas de seguridad son esencialmente de administración, no problemas del
sistema operativo.
4.1 PROTECCION
Un sistema de computación es una colección de procesos y objetos. Los objetos pueden ser de
hardware (CPU, segmentos de memoria, impresoras, discos y unidades de cinta) y de software
(archivos, programas y semáforos).
Queda claro que a un proceso solo debe permitírsele acceder a los recursos para los cuales
tiene autorización de acceso. Este requisito, conocido como el principio de “necesidad de
1
INF413
conocer”, es útil para limitar la cantidad de daño que un proceso que falla podría causar en el
sistema.
Un proceso opera dentro de un dominio de protección, que especifica los recursos a los que el
proceso puede acceder. Cada dominio define un conjunto de objetos y los tipos de operaciones
que se pueden invocar para cada objeto. La capacidad para ejecutar una operación con un
objeto es un derecho de acceso. Un dominio es una colección de derechos de acceso, cada uno
de los cuales es un par ordenado <nombre-de-objeto, conjunto-de-derechos>. Por ejemplo, si el
dominio D tiene el derecho acceso <archivo F, {leer, escribir}>, un proceso que se ejecute en el
dominio D podrá leer y escribir el archivo F, pero no podrá realizar ninguna otra operación con
ese objeto.
Las filas de la matriz de acceso representan dominios, y las columnas, objetos. Cada entrada
de la matriz consiste en un conjunto de derechos de acceso. Dado que la columna define
explícitamente el objeto, podemos omitir el nombre del objeto en el derecho de acceso. La
entrada “acceso(i,j)” define el conjunto de operaciones que un proceso que se ejecuta en el
dominio Di puede invocar con el objeto Oj.
Consideremos la matriz de acceso, que tiene cuatro dominios y cuatro objetos: tres archivos
(F1, F2, y F3) y una impresora láser. Cuando un proceso se ejecuta en el dominio D1, puede leer
los archivos F1 y F3. Un proceso que se ejecuta en el dominio D4 tiene los mismos privilegios
que en el dominio D1, pero además puede escribir en los archivos F1 y F3. Sólo los procesos que
se ejecutan en el dominio D2 tienen acceso a la impresora.
Objeto
F1 F2 F3 Impresora
dominio
D1 leer leer
D2 imprimir
D3 leer ejecutar
D4 leer y escrib. leer y escrib.
2
INF413
4.2 SEGURIDAD
4.2.1 Validación
En general la validación se basa en uno o más de tres elementos: posesión del usuario (una
llave o tarjeta), conocimiento del usuario (un identificador de usuario y una contraseña) y un
atributo del usuario (huella dactilar, patrón de retina o firma).
4.2.2 Contraseñas
Los problemas de las contraseñas tienen que ver con la dificultad de mantener secreta una
contraseña. Una forma de adivinar una contraseña es que el intruso (humano o programa)
conozca al usuario o tenga información acerca de él. La otra forma es usar fuerza bruta,
probando todas las combinaciones de letras, números y signos de puntuación hasta hallar la
contraseña. Las contraseñas cortas no tienen suficientes opciones para impedir que se adivinen
mediante intentos repetidos. Por ejemplo, una contraseña de cuatro dígitos decimales solo tiene
10000 variaciones. En promedio, bastarán 5000 pruebas para lograr un acierto. Si se puede
escribir un programa que pruebe una contraseña cada milisegundo, sólo tardaría unos cinco
segundos en adivinar una contraseña de cuatro dígitos. Las contraseñas más largas son menos
susceptibles a ser adivinadas por enumeración, y los sistemas que distinguen entre letras
mayúsculas y minúsculas, y que permiten usar números y todos los signos de puntuación en las
contraseñas hacen mucho más difícil la tarea de adivinar la contraseña.
Cada usuario tiene una contraseña. El sistema contiene una función que es extremadamente
difícil de invertir, pero fácil de calcular. Es decir, dado un valor x, es fácil calcular el valor de
la función f(x). Pero dado un valor de la función f(x), es imposible calcular x. Esta función se
usa para codificar todas las contraseñas. Sólo se almacenan las contraseñas codificadas. Cuando
un usuario presenta una contraseña, se codifica y compara con la contraseña codificada
almacenada. Aun si se logra ver esta última, no podrá decodificarse, y no podrá determinarse la
contraseña. Así, no es necesario mantener en secreto el archivo de contraseñas. La función f(x)
casi siempre es un algoritmo de cifrado que se ha diseñado y probado rigurosamente.
El defecto de este método es que el sistema ya no tiene control sobre las contraseñas.
Aunque las contraseñas están cifradas, cualquiera que tenga una copia del archivo de
contraseñas podrá ejecutar rutinas de cifrado rápido y cotejar los resultados con él.
3
INF413
Una buena técnica es generar la contraseña usando la primera letra de cada palabra de una
frase que sea fácil de recordar, usando mayúsculas y minúsculas e incluyendo algún número
o un signo de puntuación por añadidura. Por ejemplo, la frase “El nombre de mi madre es
Catalina.” Podría dar la contraseña “EndmmeC.”. La contraseña es difícil de descifrar, pero
fácil de recordar para el usuario.
Cuando se inicia una sesión, el sistema selecciona al azar y presenta una parte de un par de
contraseñas; el usuario deberá proporcionar la otra parte.
En este sistema, se presenta un reto al usuario y éste debe responder con la respuesta correcta
a ese reto.
Se podría usar un algoritmo como contraseña, por ejemplo. El sistema selecciona un entero
al azar y lo presenta al usuario. Este aplica la función y responde con el resultado correcto.
El sistema también aplica la función. Si los dos resultados coinciden, se permite el acceso.
El secreto nunca se trasmite por un medio que permita la exposición. Más bien, el secreto se
usa como entrada de la función, junto con una semilla compartida. Una semilla es un
número o secuencia alfanumérica aleatoria, y es el reto de validación del computador. El
secreto y la semilla se usan como entrada de la función f (secreto, semilla). El resultado de
esta función se trasmite como contraseña al computador. El computador realiza el mismo
cálculo. Si los resultados coinciden, el usuario queda validado.
Cualquiera que capture la contraseña de una sesión y trate de utilizarla en otra, fallará.
Se refiere al caso en el que un programa escrito por un usuario podría ser utilizado por
otro usuario, y que de esto surja un comportamiento inesperado. Dos métodos comunes para
causar tal comportamiento son: Caballo de troya y Puerta secreta
4
INF413
Una manera de proteger los datos ó los recursos es en base a los niveles de seguridad
como ser mediante la organización de la información por categorías, donde los usuarios
reciben autorización para acceder a ciertas categorías de datos. Con varias categorías ó
niveles de datos, el requisito se conoce como seguridad multinivel, y debe cumplir lo
siguiente:
- No leer arriba: Un sujeto puede leer un objeto solo de nivel de seguridad menor o
igual.
- No escribir abajo: Un sujeto puede escribir un objeto solo a nivel de seguridad
mayor o igual.
4.2.3 Cifrado
1. Dk(Ek(m)) = m
2. Tanto Ek como Dk se pueden calcular de forma eficiente
3. La seguridad del sistema depende únicamente de mantener en secreto la clave; no
depende de mantener en secreto los algoritmos E y D
mensajes más pequeños, cada uno de los cuales se puede representar con un entero así) Las funciones
E y D se definen como:
E(m) = me mod n = C,
D(C) = Cd mod n.
n=pxq
El valor de d se escoge al azar y debe ser un entero grande primo relativo a (p – 1) x (q – 1).
Es decir, d satisface
Máximo común divisor [d, (p – 1) x (q – 1)] = 1
d módulo (p – 1) x (q – 1)
Puesto que 11 es primo relativo a 24, podemos escoger d = 11; y dado que
Y
Cd mod n = 1211 mod 35 = 3 = m