Historia de Windows NT

Anuncio
Historia de Windows NT
Microsoft reunió en el 1988 lo que después formaría el equipo de desarrollo de Windows NT, con el objetivo
de desarrollar un sistema operativo polivalente, realmente moderno, basado en tecnología 32 bits.
Las primeras versiones de Windows NT − Windows NT 3.1 y Windows NT 3.1 Advanced Server −
aparecieron el 23 de Julio de 1993. Estos primeros productos contenían una nueva arquitectura del núcleo del
sistema operativo, capacidad multitarea, un sistema de archivos NT File System tolerante a fallos, soporte de
la arquitectura Windows 32, soporte multiprocesador, servicios de archivos e impresoras y algunas
innovaciones más.
Windows NT 3.5 le siguió el 8 de Septiembre de 1994 y añadía un mayor rendimiento, más completa
arquitectura y herramientas más complejas. Windows NT 3.51 añadió soporte para aplicaciones compatibles
con Windows 95 y dispositivos PCMCIA el 30 de Mayo. Windows NT 4.0 incorporó el famoso interfaz de
Windows 95, tecnología de navegación de Internet Explorer y soporte para Netware mejorado el 29 de Julio
de 1996.
Desde la primera aparición de Windows NT 4.0, el producto ha evolucionado a través de seis service packs,
añadiendo e integrando funcionalidad COM (Component Objet Model), soporte robusto para transacciones
síncronas y asíncronas, capacidad multimedia y una gran variedad de características en el entorno de
exploración de Internet y tecnologías de Servidor.
Desde unas modestas 34,000 unidades vendidas en el año fiscal de 1994, Microsoft pasó a vender un millón
de licencias de Servidor y 5.9 millones de licencias de Workstation en el año 1997. Hoy en día, Microsoft ha
vendido más de 20 millones de licencias de Windows NT.
Que es Windows NT
Windows NT es un sistema operativo modular. Esto significa que es una colección de pequeños
componentes(o módulos) que trabajan en conjunto para ejecutar las tareas de un Sistema Operativo. Cada
componente provee un conjunto de funciones que actúan como interfaz para el resto del sistema. Los
componentes pueden llamar funciones de los otros componentes para hacer su trabajo.
Partes del Sistema Operativo Windows NT
Las partes principales del sistema operativo Windows NT son:
• Subsistemas de medio ambiente: Se encargan de ejecutar los programas escritos para Windows NT
o para otros sistemas operativos soportados por NT. Ejemplo de éstos son el subsistema Win32, el
subsistema OS/2 y el subsistema POSIX.
• NT Executive o Ejecutivo de NT: Es una porción de NT que corre en el espacio de memoria
protegido llamado Kernel mode. Se encarga de casi todo lo concerniente a los procesos de seguridad y
los procesos de entrada y salida, a excepción del teclado y la pantalla (estos dos son manejados por el
subsistema Win32).
• Administradores: Son módulos del executive de NT que administran E/S, objetos, seguridad,
comunicación, memoria virtual y procesos.
• Controladores de dispositivos: Conocidos como Device Drivers en inglés, no son más que módulos
que traducen las llamadas que se le hacen a accesos a harware.
• Kernel: Se encarga de administrar el procesador.
• Capa de Abstracción de Hardware: (HAL) facilita la interfaz al hardware de forma virtual, lo que
1
hace que NT sea mas portátil.
Todas esas partes se integran de forma transparente al usuario y convierten a NT en un sistema operativo con
las siguientes características:
• Compatibilidad
• Confiabilidad
• Portabilidad
• Escalabilidad
• Desempeño
• Expansión
• Procesamiento Distribuido
Compatibilidad
Windows NT fue diseñado con la meta de mantener la compatibilidad con las aplicaciones escritas para
MS−DOS, Windows 3.x, OS/2, y POSIX. Esto se logró implementando una suite de emuladores de esos
sistemas opertivos que resiben el nombre de subsistemas de medio ambiente (Environment Subsystems).
Estos emuladores forman una capa intermedia entre las aplicaciones de los usuarios y el nucleo del sistema
operativo.
Interfaz de usuario
La interfaz de Windows NT es sencilla y fácil de usar debido a que es similar a la de las versiondes de
escritorios de windows. La interfaz de usuario es manejada por el subsistema Win32, lo que significa que
cualquier otro subsistema que desea desplegar algo en el monitor o recibir entrada de los usuarios debe
hacerlo a través del Win32.
2
Soporte a Hardware
Windows NT no es compatible con controladores de dispositivos escritos para otros sistemas operativos. La
arquitectura de manejo de dispositivos de Windows NT ha sido mejorada con respecto a los otros sistemas
operativos de Microsoft con un diseño modular, orientado a objetos, que permite que las funciones básica de
cualquier dispositivo se construyan en una capa y solo necesiten que se le añadan las porciones requeridas por
una marca específica del tipo de dispositivo. Esto hace la arquitectura de manejo de dispositivos de NT mas
abierta.
Windows NT Executive
El Executive de Windows NT es el centro de las funciones principales del sistema operativo. Debido a esto
resulta extremadamente importante proteger el Executive de cualquier aplicacion o subsistema malicioso o de
mal funcionamiento. Para lograr este objetivo, los desarrolladores del producto lo diseñaron de manera tal que
el executive corre en un modo privilegiado llamado kernel mode, mientras que los subsistemas y demas
aplicaciones corren en un modo no privilegiado llamado user mode. Esto significa que el executive tiene
acceso total a la memoria de la estación de trabajo y puede ejecutar cualquier instrucción que desee. El resto
del codigo, incluyendo los subsistemas ambientales, puede accesar solo la porcion de memoria que el
executive le autoriza accesar.
Cuando un subsistema llama un servicio del executive, la llamada es redirigida a una trampa del sistema
localizada en el executive. El procesador es entonces cambiado a kernel mode para que el executive pueda
ejecutar las instrucciones y accesar la memoria que necesita para ejecutar el servicio requerido. Luego de
completado el servicio, el executive cambia el procesador a user mode y devuelve el control al subsistema.
Multitasking
Todas las versiones de Windows soportan trabajo multitarea. Windows para MS−DOS implementa trabajo
multitarea no preferencial. Esto significa que cada ejecutable debe voluntariamente ceder el control del
procesador de forma regular para que otros programas puedan ejecutarse. Si un programa falla en ceder el
control a otros programas, el sistema de responder a la accioes del usuario y da la impression de haberse
colgado. Windows NT resuelve este problema implementando algo llamado multitarea preferencial. Esto
significa que el sistema operativo tiene el control total de cual programa corre, en que momento y por cuanto
tiempo. A cada programa se le permite correr por un pequeño quantum de tiempo. Cuando el quantum expira,
el sistema operativo graba información acerca del estado del programa en ejecución, para luego reiniciar la
ejecución del mismo donde se quedó. Entonces se carga el siguiente programa para su ejecución. El proceso
de guardar el estado de un programa y cargar el de otro se llama cambio de contexto.
En MS−DOS cada programa tiene solo un hilo (thread) de ejecución. Las instrucciones del programa son
ejecutadas de forma contínua y secuencial, haciendo solo una cosa a la vez. En Windows NT, cada programa
se puede dividir en diferentes hilos, lo que le permite hacer varias cosas de forma simultánea.
Todos los hilos corren como parte del mismo proceso. Piense en un proceso como una colección de uno o más
hilos que comparten el mismo espacio de memoria.
Esto resulta bastante seguro porque cada proceso cuenta con un espacio de memoria independiente y un hilo
en un proceso no puede accesar sin autorización el espacio de memoria de otros procesos.
Comunicación entre procesos
Debido precisamente a que Windows NT asigna un espacio de memoria independiente a cada proceso y a que
los procesos no pueden ver el espacio de memoria de otros procesos, la comunicación entre estos es más
3
complicada.
Este problema es resuelto mediante un componente del Windows NT executive llamado Administrador de
comunicación entre procesos (IPC Manager). El IPC Manager provee los mecanismos necesarios para que los
hilos de diferentes procesos puedan enviarse mensajes entre sí.
Portabilidad
La gran mayoría del código de Windows NT está escrito en lenguaje C y C++. Esto permite que se pueda
recompilar el código en otra plataforma de hardware y con solo una pequeña modificación al código escrito en
Assembler para que se ajuste al set de instrucciones que soporte el nuevo procesador donde vamos a
instalarlo.
El Kernel
El kernel es el corazón de Windows NT. Éste controla cuales procesos o hilos se ejecutan en el procesador o
los procesadores y brinda los mecanismos de sincronización para que hilos en múltiples procesadores puedan
coordinar su acceso a las estructuras de datos del sistema operativo. Para mejorar la velocidad, esas funciones
críticas del Kernel están escritas en lenguaje ensamblador.
Hardware Abstraction Layer
La capa de abstracción de hardware o HAL es un fina capa de software que se encarga de esconder de otras
capas del sistema operativo las diferencias de hardware. Esto lo hace creando la impresión que diferentes tipos
de hardware son la misma cosa ante el resto del sistema operativo.
Multi Procesamiento
Windows NT es un sistema operativo de multiprocesamiento simétrico. Esto significa que es capaz de usar
uno o más procesadores de un máquina, siempre y cuando sean del mismo tipo y estén configurados de la
misma forma. En el modelo simétrico diferentes partes de las aplicaciones y del sistema operativo corren en
diferentes procesadores al mismo tiempo. En sistemas operativos de multiprocesamiento asimétrico, por el
contrario, el sistema operativo corre en un procesador y las aplicaciones corren en otro u otros procesadores.
Esto causa que las aplicaciones tengan que esperar que el sistema operativo las alcance o viceversa lo que
provoca que el desenvolvimiento del sistema sea más lento.
Velocidad
Windows NT está optimizado de diferentes formas para mejorar su desenvolvimiento. A continuación
listamos algunas de las técnicas usadas para optimizar la velocidad del sistema:
Uso de múltiples hilos(threads): Permite que se ejecuten varios procesos sin necesidad de crearles espacios de
memoria independiente
Evaluación Haragana: Windows NT deja para último las operaciones que consumen más recursos para
ejecutarlas cuando es imprescindible hacerlo.
Copia de procesos de lectura / escritura: Significa que dos procesos pueden compartir el mismo proceso de
lectura o escritura a la memoria, cambiando solo el espacio a donde se va a escribir o leer.
Los subsistemas no son cargados a memoria hasta que no son necesarios.
4
El modelo de memoria virtual de Windows NT
El modelo de memoria de NT permite que cada proceso del sistema operativo tenga acceso a un máximo de 4
GB de memoria.
Arquitectura de la Memoria Virtual
Con memoria virtual, todas las aplicaciones parecen tener acceso a toda la memoria disponible del equipo.
Windows NT logra esto dándole a cada aplicación un rango privado de memoria llamado memoria virtual y
luego mapeando esta memoria virtual a memoria física. Windows NT mapea la memoria física y memoria
virtual en bloques de 4k llamados páginas.
Debido a que pocos sistemas tienen suficiente memoria para proveer de 4 GB a cada aplicación, el sistema
operativo maneja la memoria para crear la ilusión de que es así de la siguiente forma:
• La mayoría de las páginas están vacías, porque la aplicación no las está usando.
• Las páginas que están en uso so redireccionadas por un puntero, invisible para la aplicación, a
memoria física.
• Algunas páginas que no han sido usadas recientemente contienen otro puntero a una sección de 4K en
un archivo de paginación en el disco duro.
Proceso de manejo de la Memoria Virtual
El proceso de administración de cual memoria virtual se guarda en RAM y cual se guarda en el disco duro se
llama demand paging y es como sigue:
• Una aplicación trata de escribir datos a la memoria
• El administrador de memoria virtual intercepta la petición, determina cuantas páginas se necesitan
para completar la petición y asigna memoria física en el espacio de memoria de la aplicación. El
administrador de memoria virtual esconde la organización de la memoria física de las aplicaciones y
maneja las peticiones de forma tal que cada vez que una aplicación solicita memoria es ésste quien la
5
asigna.
• Si no hay suficiente memoria física disponible para la aplicación, el adminstrador de memoria virtual
usa demand paging para encontrar espacios que no se hayan usado últimamente y copia su contenido
al disco duro. Entonces el espacio de memoria RAM recién liberado se asigna a la aplicación que la
requiere.
• Cuando datos contenidos en el archivo de paginación en disco son necesitados, las páginas requeridas
son copiadas de Nuevo a RAM y la nueva dirección de la memoria es asignada a la memoria virtual
de la aplicación.
Sistema de Archivos Soportados Windows NT
Windows NT soporta diferentes sistemas de archivos corriendo en una misma computadora.
Los sistemas de archivos que están disponibles en el ambiente de Windows NT y los diferentes sistemas
operatives que los soportan se detallan a continuación:
Sistema de Archivo
Tabla de localización de archivos (FAT, File
Allocation Table)
Sistema de archivo Windows NT (NTFS, NT File
System)
Sistema de Archivos de CD−ROM (CDFS, CD File
System)
Sistema operativo
Windows NT, Microsoft Windows 95, Microsoft
MS−DOS, e IBM OS/2.
Windows NT
Windows NT y Windows 95
Sistema de Archivo FAT.
El sistema conocido como tabla de localización de archivos es una version ampliada y mejorada de la que se
ha estado usando por años en las computadoras basadas en el sistema operativo MS−DOS.
Las consideraciones más importantes cuando se está usando el sistema de archivo FAT son las reglas para
nombrar los archivos, la seguridad y el tamaño del archivo y la partición.
Reglas para nombrar los archivos. Bajo Windows NT, el sistema de archivo FAT ha sido ampliado para
soportar nombres largos de archivos. Los siguientes criterios aplican al momento de asignarle un nombre a un
archivo bajo Windows NT:
• El nombre puede tener hasta 255 caracteres, incluyendo la ruta de acceso.
• El nombre debe empezar con una letra o un número, y puede contener cualquier caracter, excepto: / \
[]:;|=.^*?
• El nombre puede contener múltiples espacios en blanco.
• El nombre puede contener múltiples puntos, los caracteres después del ultimo punto serán tratados
con la extensión.
• Los nombres preservan las mayúsculas, aunque no son sensibles a esta.
Security. Una partición FAT no puede ser protegida por el archivo local o la característica de seguridad de
directorio de Windows NT. El único sistema de seguridad disponible en este tipo de particiones es proveído a
través de los mecanismos para compartir directorios en NT.
Tamaño del archivo y la partición. El tamaño máximo para un archivo o una partición para el sistema de
archivos FAT es de 4GB.
NTFS.
6
El sistema de archivo Windows NT es el más seguro y robusto.
Reglas para nombrar los archivos. Las siguientes reglas aplican:
• Los nombres de archivos y de carpetas pueden tener hasta 255 caracteres, incluyendo sus respectivas
extensiones.
• En general, los nombres no son sensibles a la mayúscula.
• Puede contener cualquier caracter, excepto: ? / \ < > * | :
Seguridad en NTFS
NTFS facilita la seguridad para servidores de archivos y clientes en un ambiente corporativo.
NTFS soporta control de acceso y privilegios de propiedad importantes para la integridad de los datos de la
corporación. NTFS es el único sistema de archivos de Windows NT que permite asignar seguridad a archivos
individuales sin importar que estén compartidos o no.
Tamaño de las particiones y de los archivos.
NTFS soporta particiones y archivos más grandes que el sistema de archivos FAT, en teoría NTFS soporta
hasta 16 exabytes de información, pero esto no es posible de comprobar con el Hardware existente en la
actualidad. El tamaño máximo de un archivo individual es de 4 GB a 64 GB. El tamaño máximo para las
particiones permitido por el Hardware existente es de 2 terabytes. El mínimo recomendado para particiones
NTFS es de 50 MB.
Características adicionales
NTFS cuenta con características adicionales que lo convierten en un sistema de archivos poderoso y flexible.
Algunas de estas características son:
• Soporte para compresión de archivos: La compresión de archivos reduce los archivos ejecutables a un
60% de su tamaño y las aplicaciones basadas en texto a un 50%.
• Papelera de reciclaje independiente para cada usuario: De esta forma si un usuario borra un archivo
privado ningún otro usuario tiene acceso a recuperarlo desde la papelera.
• Recuperación automática de transacciones: NTFS es muy confiable porque utiliza un histórico de
transacciones que se actualiza automáticamente por queda archivo o directorio. Esto es usado por
Windows NT para deshacer o rehacer operaciones que fallaron debido a un falla del sistema, pérdida
de electricidad o algo por el estilo.
Seguridad
El por qué de la seguridad
En todo sistema operativo multitarea, los programas comparten varios recursos del sistema como son la
memoria, dispositivos de entrada y salida, archivos, y el procesador de la computadora. Un sistema operativo
confiable como Windows NT debe asegurar que las aplicaciones no tienen acceso a estos recursos sin la
debida autorización, o monopolizar los recursos del sistema. La seguridad es más crítica para sistemas que
funcionan como servidores de archivos o de base de datos; sin un esquema apropiado de seguridad los datos
no estarían seguros.
Windows NT fue diseñado de arriba abajo para ser robusto, confiable y seguro. El diseño de la seguridad de
NT sigue un conjunto de reglas desarrolladas por el departamento de defensa de los estados unidos.
7
Resulta prácticamente imposible añadir características de seguridad robustas a un sistema operativo existente
debido a que esto implicaría rescribir el sistema operativo casi por completo, lo que no tendría ningún sentido.
Conociendo esta realidad, Microsoft decidió comenzar desde cero el diseño del NT, lo que le permitió
diseñarlo para ser seguro desde el principio.
En resumen, las características de seguridad en Windows NT lo ayudan a alcanzar la meta de ser confiable y
le permite ser considerado como el sistema operativo a usar en las aplicaciones criticas del negocio.
Para poder contar con un sistema operativo seguro el sistema operativo necesita ser capaz de controlar el
acceso a sus recursos. Windows NT centraliza el acceso a todos los recursos manejándolos y presentándolos
como objetos. Windows NT está diseñado casi en su totalidad basándose en objetos, es tanto así que los
usuarios se refieren a el como un sistema operativo basado en objetos.
No es necesario ser un experto en programación orientada a objetos para entender las ventajas que esta nueva
forma de programar aporto a Windows NT, basta con conocer lo siguiente:
• Todos los recursos manejados por Windows NT están representados por objetos.
• Un objeto contiene datos y las funciones que actúan sobre esos datos.
• Solo Windows NT puede accesar los objetos y por consiguiente los recursos directamente.
• Todo acceso a un objeto es controlado por el sistema de seguridad de Windows NT.
• La capacidad de operación de un objeto está definida por su tipo.
¿Que es un objeto?
Un objeto es un concepto de programación en el cual los datos y las funciones que manipulan esos datos están
contenidas en la misma entidad. Solo las funciones contenidas en el objeto pueden modificar los datos.
Cualquier otro objeto o proceso que quiera accionar sobre esos datos debe hacerlo a través de las funciones
del objeto que es el dueño de esos datos. Esto hace que los objetos sean una especie de caja negra. Se sabe que
responden a ciertas funciones, pero no se sabe lo que esta pasando en el interior.
¿Cómo se relacionan los objetos a la seguridad?
Los objetos son muy importantes en Windows NT porque la única forma que un programa puede accesar un
objeto de Windows NT y por consiguiente el recurso asociado a ese objeto es pidiendo a Windows NT que
ejecute la operación en el objeto por el. Los programas NUNCA accesan los objetos o recursos directamente,
solo Windows NT puede accesar directamente los objetos o recursos. Esta propiedad de Windows NT es muy
importante para asegurar que Windows NT es seguro. Resulta bastante fácil para NT revisar cada acceso a
cada objeto para asegurarse de que el programa que lo esta accesando esta autorizado a hacer lo que esta
pidiendo.
En adición a los recursos concretos mencionados anteriormente, la seguridad de Windows NT aplica también
a objetos más abstractos. Algunos ejemplos de esto son los procesos, hilos, y objetos de sincronización.
¿Cómo funciona la seguridad bajo Windows NT?
Bajo Windows NT, la seguridad de los recursos es mas bien seguridad de los objetos que representan esos
recursos y consiste de lo siguiente:
Control de acceso a los objetos.
El primer requerimiento de seguridad bajo Windows NT es que NT debe controlar el acceso a los objetos del
sistema.
8
Estas características de seguridad hacen que Windows NT sea más confiable y robusto al prevenir que las
aplicaciones accesen recursos de otras aplicaciones o del sistema operativo ya sea con o sin intención.
Rastreando accesos o intentos de acceso a los objetos.
Debido a que Windows NT es un mecanismo para controlar el acceso a todos los objetos, puede mantener un
registro de cuales usuarios ejecutaron e intentaron ejecutar cuales acciones. El administrador del sistema
puede controlar cuales objetos son rastreados y cuales tipos de acciones y / o intentos fallidos son grabados.
En adición a su utilidad para la investigación de problemas de seguridad, los registros de auditoria pueden ser
usados para localizar fallas en las aplicaciones de los usuarios y del sistema operativo.
Prevención del monopolio de los objetos.
En Windows NT, cada usuario tiene cuotas asignadas que controlan el uso que pueden darle a los recursos,
como por ejemplo memoria, tiempo de procesamiento, etc. Windows NT se asegura que cada usuario se
mantenga dentro de su cuota asignada para cada recurso. Estas cuotas previenen que un solo usuario tome el
control total de la computadora. Lo grandioso de las cuotas es que se asignan usando el mismo esquema
centralizado de seguridad que se utiliza para controlar la seguridad de acceso a los objetos. Cada objeto tienen
cargos de uso asociados a él, este cargo es deducido del balance de la cuota del usuario cuando éste accesa el
recurso.
Como se asegura NT de que la seguridad no sea evadida
Es imposible añadir seguridad a sistemas operativos como MS−DOS, Mac OS o OS/2 2.0 porque en éstos
cualquier programa tiene acceso ilimitado a todos los recursos del sistema. Aunque estos sistemas operativos
tratasen de implementar seguridad, como por ejemplo, pidiendo contraseñas para acceso y manteniendo listas
de acceso a los archivos, cualquier programador con algo de astucia podría fácilmente evadir la seguridad bajo
estos sistemas operativos.
La implementación de una verdadera seguridad requiere que el hardware del procesador lo soporte. Los
microprocesadores producidos en un principio (Intel 8086 y motorola 68000, por ejemplo) no contaban con
los mecanismos de protección necesarios para implementar seguridad; como resultado de esto, los sistemas
operativos que corren en estos procesadores nunca pueden ser seguros. A pesar de que los procesadores mas
recientes (del 80286 en adelante) si cuentan con el soporte necesario para implementar mecanismos de
seguridad, los sistemas operativos mencionados arriba no implementan seguridad para mantener la
compatibilidad con los procesadores anteriores.
Windows NT, por otra parte, puede ser seguro porque usa los mecanismos de seguridad que proveen los
microprocesadores modernos. Windows NT usa las siguientes características facilitadas por los
microprocesadores modernos:
• La memoria donde corre NT esta protegida de otros programas.
• La memoria de cada programa esta protegida de los demás programas.
• No es permitido a los programas de los usuarios el acceso a los dispositivos.
Windows NT corre en memoria protegida
En algunos sistemas operativos inseguros, cualquier programa puede accesar la memoria del sistema
operativo.
Bajo Windows NT, ningún otro programa a parte del sistema operativo puede accesar el código o los datos de
9
Windows NT. Cualquier programa que intente accesar el espacio de memoria de Windows NT es rechazado
por el procesador. Cualquier intento de esta índole causa que Windows NT aniquile el proceso ofensor. Por
otra parte, Windows NT tiene acceso a toda la memoria del equipo incluyendo la de los demás programas.
Memoria separada para cada proceso
En algunos sistemas operativos inseguros, cualquier programa puede accesar a cualquier parte de la memoria
del equipo, incluyendo la de los demás programas. Esto no solo es inseguro sino que hace que los programas
sean poco confiables porque podrían ser modificados por cualquier otro programan mientras corren ya sea
accidentalmente o de forma maliciosa.
Bajo Windows NT, cada programa corre en su propio espacio de memoria, de esta forma no puede accesar la
memoria que pertenece otros programas sin autorización. Cualquier intento de accesar sin autorización un
espacio de memoria que pertenece a otro programa es detectado por Windows NT y el proceso ofensor es
terminado por Windows NT.
Solo Windows NT puede accesar directamente los dispositivos
En algunos sistemas operativos cualquier programa tiene acceso a cualquier dispositivo directamente.
Cualquier esquema de seguridad que un sistema operativo como este tratase de implementar podría ser
burlado fácilmente con solo rodear el sistema operativo y accesar los dispositivos directamente.
Esto también causa problemas cuando más de un programa quiere tener acceso al mismo dispositivo al mismo
tiempo. En Windows NT ningún programa tiene acceso directo a ningún dispositivo. Cuando un programa
necesita accesar un dispositivo, debe hacer una llamada a Windows NT y es éste último que accesa el
dispositivo luego de cerciorarse de que el programa tiene acceso al dispositivo deseado y que el dispositivo no
este en uso por otro programa.
Implementación de la seguridad bajo Windows NT
El tipo de seguridad que se usa en Windows NT está basado en el uso de IDs de usuarios. Bajo este esquema
el propietario de un objeto puede especificar cuales usuarios o grupos pueden accesar el objeto y con que tipo
de acceso (lectura, escritura, etc.).
A diferencia de los sistemas que se basan solo en contraseñas para controlar el acceso a los recursos sin tomar
en cuenta quien los esta accesando, la seguridad de Windows NT requiere lo siguiente:
• Una forma de identificar el usuario, llamada token de acceso.
• Una lista de cuales usuarios o grupos de usuarios pueden hacer cuales operaciones en cada objeto,
llamada "lista de control de accesos" (ACL). Cada objeto tiene su propia lista de control de acceso.
Debido a que Windows NT puede identificar cada usuario y sabe a que esta autorizado, puede comparar el
permiso de la lista de control de acceso del objeto con el token de acceso (ID de usuario) para determinar que
tipo de acceso, si hay alguno, tiene cada usuario.
El por qué del logon obligatorio
Para poder asegurarse que un usuario es quien dice ser, Windows NT obliga a los usuarios a digitar un nombre
de usuario y una contraseña para poder tener acceso al sistema. Esto provee una forma de identificar quien es
cada usuario y determinar si esta o no autorizado a conectarse al sistema.
Los pasos para un logon exitoso son los siguientes:
10
• El proceso Winlogon del subsistema Win32 despliega una caja de dialogo y pide al usuario su ID y
contraseña, luego pasa esta información al subsistema de seguridad.
• El subsistema de seguridad a su vez verifica si la información facilitada pertenece a un usuario autorizado
del sistema haciendo una búsqueda en la base de datos del administrador de cuentas de seguridad (SAM).
• Si el acceso esta autorizado, el subsistema de seguridad construye un token de acceso y lo devuelve al
proceso Winlogon.
• Winlogon llama el subsistema Win32 para crear un nuevo proceso para el usuario y provee el token de
acceso, el cual es anexado al proceso recién creado.
Este token de acceso es crucial: cada proceso creado por el usuario es marcado con el token de acceso para
facilitar el monitoreo y control del acceso del usuario a los recursos del sistema. Este token de acceso
contiene, entre otras cosas, el ID del usuario y el ID de cada grupo al cual éste pertenece.
El logon obligatorio tiene otros usos como son:
• Elimina la posibilidad de aplicaciones del tipo caballo de Troya que pueda robar la información de
acceso de los usuarios. Esto así porque cada persona tiene que conectarse y solo el proceso Winlogon
puede crear nuevos tokens de acceso, no es posible escribir aplicaciones que capture contraseñas de
los usuarios y luego los conecte. Muchos usuarios preguntan como eliminar el logon obligatorio, la
respuesta es que no se puede porque no se debe.
• Permite además que se guarde información de las preferencias y configuración del ambiente de
trabajo de cada usuario de manera tal que cuando este se conecte de nuevo encuentre su ambiente de
trabajo como lo dejó la última vez.
• Permite además la auditoria de los accesos a los recursos.
Identificación de qué puede hacer cada usuario / grupo con un objeto
Hemos visto que Windows NT provee la forma para que los usuarios puedan conectarse al sistema y crear un
token de acceso. Ahora Windows NT necesita ser capaz de comparar ese token de acceso con la lista de
control de acceso de cada objeto que el usuario accesa.
Como fue mencionado anteriormente, cada objeto tiene asociado a él una lista de permisos para varios
usuarios y grupos llamada lista de control de acceso. El ACL contiene la lista completa de los derechos de
acceso de ese objeto. El ACL se construye cuando el objeto es creado. El dueño del objeto tiene control sobre
cuales procesos pueden accesar el objeto y que pueden hacer. Puede mantener dicho control modificando el
ACL.
Cada entrada en el ACL contiene un ID de seguridad que puede ser de un usuario o de un grupo y los
permisos asignados o revocados de ese ID.
¿Cómo se accesan los objetos en Windows NT?
En Windows NT los objetos son accesados usando un esquema de Abrir / Accesar cuantas veces quiera /
cerrar.
Abrir: antes de accesar cualquier objeto, se debe abrir un Handle al objeto. Un Handle es un token que
Windows NT devuelve ala programa y identifica de forma única la conexión al objeto. El proceso o programa
le devuelve el token a Windows NT cuando quiere accesar el objeto.
Accesar: Realizar cualquier acción soportada por el tipo de objeto mediante el uso del Handle que Windows
NT le devolvió al proceso. El proceso puede accesar el objeto cuantas veces quiera y de cualquier forma que
le sea permitida según sus derechos de acceso.
11
Cerrar: Le dice a Windows NT que ya el proceso o programa ha terminado de usar el objeto.
12
Descargar