Seguridad y Protección
Un sistema informático ofrece servicios a usuarios humanos en el seno de una sociedad u organización. Algunos tipos de servicios son:
- Gestión de información (p.ej. transacciones financieras, archivos personales, etc.)
- Control de otras actividades (p.ej. procesos industriales, control de tráfico, etc.)
- Servicios empotrados en un aparato (p.ej. automóviles, robots…).
Los recursos del sistema informático son limitados: hay un coste inherente a su utilización, que puede ser repercutido en forma de tarifa o impuestos a los usuarios.
En toda sociedad u organización humanas existen unas restricciones de uso de la información: derechos de intimidad; información que representa o es sujeto de propiedad; etc. En tales casos es necesario restringir según qué usuario el acceso a la información del sistema.
Seguridad Informática
Garantizar la integridad, disponibilidad y privacidad de la información contenida en un sistema informático.
Permitir la distinción de clases de usuarios, con diferentes autorizaciones sobre el uso de los recursos del sistema.
La seguridad informática: es una materia amplia, que abarca entre otras cosas: los modos de trabajo de las personas, los dispositivos físicos de seguridad y la seguridad interna de la máquina y el sistema operativo.
Seguridad Externa
La referente a las instalaciones del sistema informático y al acceso de personas al sistema y su información. Contempla estas dos áreas:
- Seguridad física: De las instalaciones. Incluye medidas de prevención o recuperación de siniestros, y control de acceso al sistema.
- Seguridad operacional: Políticas y mecanismos de seguridad: niveles de autorización o responsabilidad, métodos de acceso, protocolos de comunicación.
Seguridad Interna
La que se refiere a la circuitería del sistema, o a los asuntos de seguridad del sistema operativo.
Protección
Parte de la seguridad interna relativa al control de acceso de programas, procesos o usuarios a los recursos de un sistema informático.
Tipos de Amenazas Contra la Integridad del Sistema
- Uso negligente o incorrecto
- Siniestros (daños físicos al sistema)
- Uso no autorizado o indebido
- Sabotaje (acto deliberado de alterar el funcionamiento del sistema)
Estas amenazas pueden ser accidentales o intencionadas.
Intrusión: Entrada no autorizada o indebida en el sistema. También llamada penetración.
Posibles Efectos de las Amenazas
- Revelación de información no autorizada
- Destrucción de información
- Utilización indebida de servicios del sistema
- Daños físicos al sistema
- Degradación en el funcionamiento del sistema
- Denegación de acceso a usuarios autorizados
Algunos Intentos de Intrusión
Basados en: oportunismo, búsqueda de información útil, programación, etc.
- Robo o espionaje de contraseñas
- Aprovechar descuidos
- Recolección de basura
- Inspección de información del sistema
- Escucha electrónica
- Prueba y error: programas analizadores de contraseñas, descifradores, etc.
Programas señuelo: caballo de Troya; ardid de engaño
Utilización de una «puerta trasera» (backdoor)
Explotación de agujeros del sistema
Software Malicioso
Programas cuyo propósito directo o indirecto es violar la seguridad del sistema
Gusanos (worms) y virus: programas orientados al sabotaje del sistema
Caballos de Troya
Objetivos del Sistema de Seguridad
- Establecer de forma eficaz un sistema de autorizaciones de utilización de los recursos y la información
- Prevenir o evitar las amenazas a la seguridad
- Detectar los intentos de intrusión y llevar un control de las operaciones
- Recuperarse de las violaciones de la seguridad
- Resolver lo anterior consumiendo el mínimo de recursos, y sin que represente una gran molestia a los usuarios (en suma, con el menor coste)
El sistema de autorizaciones ha de definir:
- Forma en que se genera, añade, borra o extrae información
- Flujos de información interna permitidos
- Autorizaciones de acceso a la información
- Autorizaciones de uso de recursos en general
Seguridad: Principios Nada Válidos
- Buena fe: siempre habrá usuarios malintencionados o negligentes
- Menosprecio del atacante
- Optimismo (recordar la Ley de Murphy)
Seguridad: Principios de Diseño
(Saltzer y Schroeder)
- Mínimo privilegio: Cada sujeto ha de tener el mínimo de privilegios para realizar sus funciones
- Separación de privilegios: Procurar que tengan que satisfacerse varias condiciones para realizar una función
- Mínimo mecanismo común: Minimizar los recursos compartidos
- Simplicidad de mecanismo: Evitar complicaciones innecesarias
- Mediación completa: Hacer la comprobación de acceso siempre
- Valores predeterminados seguros: La opción por omisión debería ser denegar el acceso al recurso
- Diseño público: La eficacia del sistema de seguridad no debe basarse en el secreto del diseño
- Aceptabilidad por los usuarios: El sistema de seguridad debe ser fácil de cumplir y poco molesto
Validación de Usuarios
Validación o autentificación: mecanismos para admitir o denegar el acceso de usuarios
El mecanismo de validación ha de ser lo más cómodo, aceptado por los usuarios, barato y difícil de replicar o robar.
Debería minimizar las falsas aceptaciones así como los falsos rechazos de usuarios.
Clases de mecanismos:
- Contraseña: algo conocido por la persona
- Artefacto: algo poseído por la persona
- Biometría: algo característico de la persona
Contraseñas
- El mecanismo más popular y económico
- Muy fáciles de implementar
- No requieren hardware adicional
- Imponen esfuerzos al usuario
- Su sustracción o adivinación es difícil de detectar
- Exigen mecanismos más elaborados para garantizar cierto nivel de seguridad
Artefactos
Tarjetas magnéticas, llaves, etc.
- Cómodas de usar y aceptadas socialmente
- Casi siempre son multifunción (sirven para otras cosas)
- Evitan caballos de Troya
- Pueden ser difíciles de replicar
- Su pérdida o robo es fácilmente detectado
Métodos Biométricos
Características fisiológicas (huella dactilar, vasos retinales) o conductuales (firma, patrón de voz, etc.)
- Requieren hardware más costoso
- Prácticamente imposibles de replicar
- La tasa de falsos rechazos puede ser alta
- Tienden a ser rechazados socialmente
Contraseñas
Si son fáciles de recordar, son fáciles de adivinar
Solución: contraseñas aleatorias generadas por el sistema
Difíciles de recordar se tienden a anotar se pueden robar
Contraseñas multinivel, o una por tipo de servicio incómodo
Reto dinámico: plantear un enigma conocido por el usuario impracticable
Limitación de intentos consecutivos, p.ej. con subsiguiente desconexión de la terminal o cancelación de la cuenta riesgo de denegación de servicio o de merma de eficiencia
Caducidad de contraseñas que expiren al cabo de cierto tiempo
Medidas de Protección Típicamente a Cargo del Sistema Operativo o el Hardware
Establecer niveles de privilegio mediante circuitería:
- Modo dual de operación
- Protección de segmentos de memoria
- Protección de acceso a periféricos
- Protección de la gestión de eventos (interrupciones, temporizador…)
Limpieza de almacenamiento borrado evita obtención de información por recolección de basura
Servicios de registro de auditoría ofrecidos por el sistema operativo
Replicación de la información (copia de seguridad, etc.)
Autocomprobación de consistencia de la información (sumas de control, códigos correctores de error…) ð antivirus
Criptografía
Cifrado en las transmisiones y en el almacenamiento de datos altamente sensibles (como las contraseñas, ficheros personales…)
Modelo Formal de Protección
En un computador, en materia de protección, consideramos que un conjunto de sujetos (entidades activas=procesos o usuarios) realiza operaciones sobre objetos (cualquier recurso, información, etc.)
Cada objeto admite un conjunto de operaciones sobre él.
Los sujetos y objetos pueden aparecer y desaparecer en el transcurso de la existencia del sistema (ej. nuevos procesos, nuevos ficheros)
Derecho de acceso: Autoridad de un sujeto para ejecutar una operación
Cada sujeto posee un conjunto de derechos de acceso sobre cada recurso.
Dominio de protección: conjunto de derechos de acceso, como una lista de pares <objeto, conjunto de derechos>
En cada momento, un proceso se ejecuta dentro de un dominio de protección.
Dominios de Protección
Ejemplo de representación de dominios de protección:
pepe.c juan.c cca.out impresora
D1 leer escribir ejecutar borrar crear ejecutar imprimir
D2 leer escribir ejecutar borrar crear ejecutar
Al conjunto de dominios de protección se le llama a veces matriz de acceso
¿Qué representa un dominio de protección?
- Un usuario (UNIX) o un grupo de usuarios
- Un proceso
- Un procedimiento (Hydra)
Los dominios de protección o los derechos de acceso pueden también considerarse objetos.
Por poner un caso, puede definirse el derecho de acceso que permita a un proceso ejecutarse en un dominio de protección determinado.
Ejemplo: matriz de acceso que define el ciclo de vida de un proceso de edición/compilación/ejecución de un programa.
pepe.c a.out cc impresora D1 D2 D3
D1 crear leer escribir cambiar a
D2 leer crear borrar escribir ejecutar cambiar a
D3 ejecutar imprimir eliminar eliminar eliminar
Obsérvese que en este ejemplo se atiende al principio de mínima necesidad.
Implementación de los Dominios de Protección
La matriz de acceso es sólo una construcción teórica; potencialmente es ilimitada y además es escasa (muchas casillas en blanco).
Mecanismos desarrollados:
- Reglas implícitas
- Jerarquías de acceso
- Encapsulamiento (en lenguajes de programación)
- Listas de acceso
- Capacidades
- Llaves y cerraduras
Reglas Implícitas
Evitan expresar la información sobre protección en estructuras de datos.
Muy común es considerar que un usuario es un dominio de protección, o alguna variante de este principio.
Ejemplo: En Unix, cada objeto o proceso tiene un usuario propietario. Determinadas operaciones (matar un proceso, cambiar permisos de un fichero) sólo se pueden efectuar si el usuario propietario del proceso actuante coincide con el del objeto.
El usuario se autentifica mediante un mecanismo de nombre y contraseña; tras autentificarse, queda en un dominio de protección correspondiente al UID del usuario.
Jerarquía de Accesos
Establecer un conjunto de niveles jerárquicos de acceso a los recursos, y las transiciones permitidas entre ellos.
Modo dual de operación (modo supervisor/modo usuario): dos niveles.
Múltiples niveles de operación.
Ej. modo núcleo, modo sistema, modo administrador, modo usuario.
Anillos de protección (MULTICS)
n niveles, cada uno asociado a un dominio de protección.
Cada proceso se ejecuta en un nivel k; tiene como dominio de protección a la unión de los dominios de nivel i £ k.
Solución muy limitada: no se pueden definir dominios de protección que no sean jerárquicos.
Encapsulamiento en Lenguajes de Programación
Muchos lenguajes protegen los objetos declarados en los programas mediante estructuración del código en bloques, compilación separada de módulos, abstracción de tipos de datos, etc.
Listas de Accesos
Cada objeto tiene asociada una lista de elementos <dominio,derechos>, con los derechos de acceso existentes sobre él ð las celdas no vacías de su columna en la matriz de accesos
La información de protección puede así estar dispersa: cada objeto tiene su lista aparte.
Las celdas vacías de la matriz de acceso no están representadas.
Variantes:
- Listas con derechos por omisión (si no apareces en las listas, se te concede el derecho por omisión)
- Listas denegatorias (quien aparece en ellas, no tiene el derecho indicado)
Capacidades
Una capacidad es la representación de un dominio de protección: funciona a modo de boleto que da derecho a acceder a un objeto, de la manera especificada en la propia capacidad.
Desde el punto de vista de un lenguaje de programación, una capacidad es un puntero protegido.
Una capacidad representa conceptualmente una fila de la matriz de accesos.
Una capacidad es un tipo especial de apuntador a objetos.
Cada sujeto (proceso) posee una lista de capacidades, que le permiten acceder de forma controlada a los objetos del sistema.
Basta la posesión de la capacidad para tener acceso al objeto correspondiente (con los derechos asociados a la capacidad). No hay verificación adicional.
El sistema ha de garantizar que un proceso no pueda utilizar capacidades que no posee.
Un proceso actúa sobre los objetos invocando servicios del tipo operación ( capacidad, parámetros… ), servicios proporcionados por el sistema operativo.
En el sistema puede haber muchas capacidades distintas que apunten al mismo objeto, pero con diferentes derechos.
Implementación de un Sistema de Capacidades
Como las capacidades son apuntadores a objetos, la implementación de un mecanismo de capacidades se entremezcla con la gestión de la memoria (primaria o secundaria).
La lista de capacidades, o las capacidades mismas han de estar protegidas por hardware, de forma que un proceso o usuario no pueda crear sus propias capacidades.
Formas de implementar el sistema:
- Memoria marcada
- Memoria segmentada
- Capacidades cifradas
Memoria Marcada
Cada objeto tiene una marca que indica su tipo: en este caso, se distinguiría entre capacidades o palabras de memoria normales.
Sólo el sistema operativo estaría facultado para crear objetos de tipo capacidad.
Ejemplo:
dirección tipo contenido
. . .
. . .
123 NORMAL 33
124 CAPACIDAD 489783498
125 NORMAL 12345
126 NORMAL 970567
. . .
. . .
Inconveniente: exige un modelo de memoria distinto al de Von Neumann.
Memoria Segmentada
Se hace uso de una tabla local de capacidades por proceso; y una tabla global de objetos. Ambas estructuras han de estar protegidas, para evitar que un proceso cree o altere capacidades de forma incontrolada.
Ejemplo:
Ventaja: implementable a partir de un sistema de memoria segmentada
Capacidades Cifradas
La capacidad es un patrón de bits formado por el identificador de objeto, los derechos de acceso y una suma de control (checksum):
id. objeto derechos suma de control
Toda esta información está cifrada por el sistema, de forma que los componentes son irreconocibles.
No se precisan tablas de objetos ni de capacidades, puesto que toda la información de direccionamiento y protección está autocontenida en la capacidad.
Por ello este mecanismo es ideal para sistemas distribuidos.
Existe la probabilidad de generar indebidamente una capacidad válida, pero es prácticamente nula gracias al cifrado y la suma de control, si tienen una gran cantidad de bits.
En lugar de sumas de control, se pueden usar marcas de tiempo (timestamps) con el instante de creación de la capacidad ðdificulta más su generación indebida
Manipulación de Capacidades
Podrán existir servicios para:
- Crear una capacidad nueva
- Destruir una capacidad
- Recortar los derechos de una capacidad
- Copiar o mover una capacidad a otro proceso o usuario
Para evitar problemas de seguridad, podemos definir un proceso propietario de cada capacidad, el cual sea el único con poder para eliminarla o recortar sus derechos.
Comparación Entre Capacidades y Listas de Accesos
En un sistema basado en capacidades, la información de protección reside en los sujetos (las listas de capacidades), en vez de en los objetos, como ocurre con las listas de acceso.
Las capacidades son además direcciones de objetos.
Ventajas de las capacidades:
- El sistema de acceso a objetos puede ser más rápido con capacidades, dado que no se hacen recorridos en listas. La dirección del objeto viene dada por la propia capacidad.
- Se pueden transferir derechos de acceso entre los procesos fácilmente y sin tener que alterar listas de accesos.
Inconvenientes de las capacidades:
- Es difícil conocer qué procesos tienen derechos de acceso sobre un objeto en particular.
- Si un proceso revoca una capacidad, ¿cómo se consigue que afecte a los otros procesos que poseen esa misma capacidad?
- Si un objeto desaparece, ¿cómo se invalidan todas las capacidades relativas a ese objeto?
Llaves y Cerraduras
Mecanismo intermedio entre las listas de accesos y las capacidades.
Cada objeto dispone de un conjunto de cerradurasð patrones de bits únicos en el sistema. Cada cerradura se asocia a un conjunto de derechos.
Cada dominio de protección posee un conjunto de llaves ð patrones de bits únicos, cada uno de los cuales encaja con una llave en el sistema.
Un proceso puede efectuar una operación con un objeto sólo si el dominio bajo el que se ejecuta posee una llave específica para alguna de las cerraduras del objeto.
Tanto las llaves como las cerraduras han de estar protegidas, de la misma forma que las capacidades.
Este mecanismo goza de las ventajas de las capacidades, a la vez que simplifica el problema del borrado de objetos que existe con las capacidades.