miércoles, 1 de diciembre de 2010

reporte de calificacion

si funciona te salvas gallito y preparate con un saco que LIGA te va a golear

lunes, 9 de agosto de 2010

Seguridad en los sistemas operativos.


Los sistemas de archivos contienen con frecuencia información muy valiosa para sus usuarios. La protección de esa información en contra del uso no autorizado es entonces una preocupación esencial de todos los sistemas de archivos.


El ambiente de seguridad.

Los términos seguridad y protección se utilizan en forma indistinta. Sin embargo, es útil hacer una distinción entre los problemas generales relativos a la garantía de que los archivos no sea leídos o modificados por personal no autorizado, lo que incluye aspectos técnicos, de administración, legales y políticos, por un lado y los sistemas específicos del sistema operativo utilizados para proporcionar la seguridad, por el otro. Para evitar la confusión, utilizaremos el término seguridad para referirnos al problema general y el término mecanismo de protección para referirnos a los mecanismos específicos del sistema operativo utilizado para resguardar la información de la computadora. Sin embargo, la frontera entre ellos no está bien definida. Primero nos fijaremos en la seguridad; más adelante analizaremos la protección.


La seguridad tiene muchas facetas. Dos de las más importantes son la pérdida de datos y los intrusos. Algunas de las causas más comunes de la perdida de datos son:


Actos divinos: Incendios, inundaciones, terremotos, guerras, revoluciones o ratas que roen las cintas o discos flexibles.
errores de Hardware o Software: Mal funcionamiento de la CPU, discos o cintas ilegibles, errores de telecomunicación o errores en el programa.
Errores Humanos: Entrada incorrecta de datos, mal montaje de las cintas o el disco, ejecución incorrecta del programa, perdida de cintas o discos.

La mayoría de estas causas se pueden enfrentar con el mantenimiento de los respaldos adecuados; de preferencia, en un lugar alejado de los datos originales.


Un problema más interesante es que hacer con los intrusos. Estos tienen dos variedades. Los intrusos pasivos solo desean leer archivos que no están autorizados a leer. Los intrusos activos son más crueles: Desean hacer cambios no autorizados a los datos. Si se desea diseñar un sistema seguro contra los intrusos, es importante tener en cuenta el tipo de intruso con el que se desea tener protección. Algunas de las categorías comunes son:

Curiosidad casual de usuarios no técnicos. Muchas personas tienen en sus escritorios terminales para sistemas con tiempo compartido y, por la naturaleza humana, algunos de ellos leerán el correo electrónico de los demás u otros archivos, si no existen barreras en frente de ellos. Por ejemplo la mayoría de los sistema UNÍS tienen pre definido que todos los archivos se pueden leer de manera pública.
Conocidos husmeando. Algunos estudiantes, programadores de sistemas, operadores y demás personal técnico consideran como un reto personal romper la seguridad del sistema de cómputo local. A menudo son muy calificados y están dispuestos a invertir una cantidad sustancial de su tiempo en este esfuerzo.


Un intento deliberado de hacer dinero. Algunos programadores en banco han intentado penetrar un sistema bancario con el fin de robarle al banco. Los esquemas han variado desde cambiar el software para truncar y no redondear el interés, para quedarse con una pequeña fracción de dinero, hasta sacar dinero de las cuentas que no se han utilizado en años o el "correo negro" .
Espionaje comercias o militar. El espionaje indica un intento serio y fundamentado por parte de un competidor u otro país para robar programas, secretos comerciales, patentes, tecnología, diseño de circuitos, planes de comercialización, etc. A menudo, este intento implica la cobertura de cables o el levantamiento de antenas hacia la computadora con el fin de recoger su radiación electromagnética.


Debe quedar claro que el intento por mantener la KGB lejos de los secretos militares es un poco distinto del intento por evitar que los estudiantes inserten un mensaje gracioso en el sistema. La cantidad de esfuerzo que alguien pone en la seguridad y la protección depende claramente de quién se piensa sea el enemigo.


Otro aspecto del problema de la seguridad es la privacía: la protección de las personas respecto del mal uso de la información en contra de uno mismo. Esto implica en forma casi inmediata muchos aspectos morales y legales.

Fallas famosas de seguridad

Al igual que la industria del transporte tiene el Titanic y el Hindenburg, los expertos en seguridad de las computadoras tienen algo que quisieran poder olvidar. En esta sección analizaremos algunos interesantes problemas de seguridad que surgieron en cuatro sistemas operativos: Unix, Multics, Tenex, y el OS/360.


La utilería LPR de Unix imprime un archivo en la impresora de líneas tiene una opción para eliminar el archivo después de ser impreso. En las primeras versiones de Unix, era posible que cualquiera utilizara LPR para imprimir, para que después el sistema eliminara el archivo con la contraseña.


Otra forma de penetrar a Unix era mediante el enlace de un archivo llamado core en el directorio de trabajo al archivo con la contraseña. El intruso forzaba entonces un vaciado de un programa SETUID, que escribía el sistema en el archivo core; es decir, en la parte superior del archivo con la contraseña. De esta forma, un usuario podía reemplazar el archivo con contraseña por otro que contuviera unas cuantas cadenas de su elección (por ej., argumentos de un comando).


Otro ligero error de Unix es relativo al comando mkdir foo.


Mkdir, que era un programa setuid poseído por la raíz, crea primero el nodo-i para el directorio foo con la llamada al sistema mknod y después cambia el propietario de foo de su identificación de usuario efectiva (es decir, desde la raíz) hasta su identificación real.cuando el sistema era lento, a veces era posible eliminar de manera rápida el nodo-i del directorio y hacer un enlace con el archivo de contraseña bajo el nombre foo después de ejecutar el mknod pero antes de chown. Cuando mkdir ejecutaba chown, hacía que el usuario fuera el propietario del archivo de contraseña. Si se colocaban los comandos necesarios en un guión del shell, podrían estar intentando una y otra vez hasta que funcionara el truco.


El problema de seguridad de Multics se relacionaba con el hecho de que los diseñadores de sistema siempre pensaron en Multics como un sistema de tiempo compartido, cuyas facilidades para el procesamiento por lotes surgieron como una idea tardía, para pacificar ciertas viejas intransigencias de los lotes. La seguridad en el tiempo compartido era excelente; la seguridad en los lotes era inexistente. Cualquier persona podía introducir un trabajo por lotes que leyera un paquete de naipes en el directorio de cualquier otro usuario.


Para robar los archivos de alguien, lo único que había que obtener era una copia del código fuente de editor, modificarlo para robar archivos(pero que siguiera funcionando en forma perfecta como editor), compilarlo y leerlo dentro del directorio bin de la víctima. La siguiente vez que la víctima llamaba al editor, obtenía la versión del intruso, la cual editaba muy bien, pero que también robaba todos sus archivos. La idea e modificar un programa normal para que hiciera cosas adversas además de su función usual y arreglar las cosas para que la víctima utilizara la versión modificada se conoce ahora como el ataque del Caballo de Troya.


El sistema operativo Tenex era muy popular en las computadoras DEC-10. ya no se utiliza mucho pero su nombre quedará grabado para siempre en los anales de la seguridad de las computadoras, debido al siguiente error del diseño. Tenex permitía la paginación. Para que los usuarios supervisaran el comportamiento de sus programas, era posible indicar al sistema que llamara una función del usuario si ocurría un fallo de página.


Tenex también utilizaba contraseñas para la protección de archivos. Para tener acceso a un archivo, el programa debía presentar la contraseña adecuada. El sistema operativo verificaba la contraseña carácter por carácter y se detenía en cuanto notara que la contraseña estuviera equivocada. Para penetrar a Tenex, un intruso colocaría una contraseña de la forma que se muestra en la figura siguiente, con el primer carácter al final de la página y el resto al principio de la siguiente.

El siguiente paso era garantizar la segunda página no estuviera en la memoria; por ejemplo, para hacer referencia a un número grande de páginas, con lo que seguramente la segunda página saldría de la memoria para tener espacio para las demás. Ahora, el programa intentaría abrir el archivo de la víctima, mediante la contraseña alineada con cuidado. Si el primer carácter de la verdadera contraseña era distinto de A, el sistema detenía la verificación en el primer carácter e in formaría que la contraseña no era válida. Sin embargo, si la verdadera contraseña comenzaba con A, el sistema continuaba la lectura y obtenía un fallo de página, de la que era informado el intruso.


Si la contraseña no comenzaba con A, el intruso cambiaba la contraseña por la de la figura anterior y repetía todo el proceso para ver si comenzaba con B. Sólo requería 128 intentos recorrer todo el conjunto de caracteres ASCII y determinar así el primer carácter.


Nuestra última falla se refiere a OS/360. la descripción siguiente es un poco simplificada, pero contiene las esencias de las fallas. Este sistema, era posible iniciar una lectura de cinta y continuar después el cálculo mientras que la unidad de cinta transferiría datos al espacio el usuario. El truco aquí consistía en iniciar con cuidado una lectura de cinta y después hacer una llamada al sistema que necesitará una estructura de datos del usuario; por ejemplo, un archivo que leer y su contraseña.


El sistema operativo verificaba en primer lugar que la contraseña fuera la correcta para el archivo dado. Después regresaba y leía el nuevo nombre para el verdadero acceso. Por desgracia, justo antes de que el sistema buscara el nombre del archivo por segunda vez, se escribía encima el nombre del archivo en la unidad de cinta. El sistema leía entonces el nuevo archivo, para el cual no se presentaba contraseña alguna. La sincronización necesitó algo de práctica, pero eso no fue difícil. Además, si hay algo que hacen bien las computadoras, es repetir la misma operación una y otra vez.

El gusano de internet

La mayor de las violaciones de la seguridad de las computadoras comenzó una tarde el 2 de noviembre de 1988, cuando un estudiante graduado de Cornell, Robert Tappan Morris, liberó un programa gusano en internet. Esto produjo fallas en cientos de computadoras en universidades, corporaciones y laboratorios de gobierno en todo el mundo antes que fuera rastreado y eliminado. También marco el inicio de una controversia que todavía no ha concluido.


La historia comenzó cuando Morris descubrió dos errores en el UNIX, de Berkeley, lo que el permitió tener acceso no autorizado a máquinas en internet, la basta red de investigación que conecta ciento de máquinas en EEUU, Europa y el Lejano Oriente. El trabajó totalmente solo y escribió un programa que se producía a si mismo, llamado gusano, el cual pudo aprovechar esos errores y reproducirse en segundos, en cada una de las máquinas que tuviera acceso. Trabajó en el programa durante meses, integrándolo de manera cuidados y haciendo que borrara su rastro.


No se sabe si la versión liberada el dos de noviembre de 1988 era una prueba o era real. En todo caso, hizo que la mayoría de los sistemas SUN y VAX de internet se hincaran ante ella unas horas después de su aparición. La motivación de Morris se desconoce, aunque es posible que pretendiera una broma práctica de alta tecnología, pero que debido a un error de programación se le escapó de las manos.


Desde el punto de vista técnico el gusano constaba de dos programas, el arrancador y el gusano propiamente dicho. El arrancador era un archivo de 99 líneas en C llamado l1.c. Se compilaba y ejecutaba en el sistema por atacar. Una ves ejecutado, se conectaba con la máquina de la que provenía, cargaba el gusano principal y lo ejecutaba. Después de ciertos problemas para ocultar su existencia, el gusano buscaba en las tablas de ruta del nuevo anfitrión, para saber las máquinas que estaban conectadas con este e intentaba diseminar el arrancador a esas máquinas.


Existían tres métodos para tratar de infectar las nuevas máquinas. El método 1 intentaba ejecutar un Shell remoto mediante el comando RSH. Algunas máquinas confían en otras, por lo que podrían ejecutar RSN sin autentificación alguna. Si esto funcionaba, el Shell remoto cargaba el programa del gusano y seguía infectando las demás máquinas a partir de ese punto.


El método 2 utilizaba un programa presente en todos los sistemas BSD, llamado finger, el cual permite a cualquier usuario de internet escribir y poder exhibir la información relativa a una persona en esa instalación dada. Esta información incluye por lo general el nombre real de la persona clave de acceso, direcciones de su casa y oficina, nombre de la secretaria y número de teléfono, número de fax y otra información semejante. Es un equivalente electrónico del directorio telefónico.


Finger funciona de la manera siguiente. En cada instalación BSD, un proceso secundario llamado finger deamon se ejecuta todo el tiempo con el fin de enviar y contestar las solicitudes de todas las partes de internet. Lo que hizo el gusano fue llamar a finger con una cadena especialmente diseñada de 536 bytes como parámetro. Esta cadena sobrepasa la capacidad del buffer de deamon y escribía sobre su pila. El error que se utilizaba aquí era el hecho de que daemon no verificaba si se excedía la capacidad del buffer. Cuando daemon regresaba del procedimiento del que se encontraba cuando recibió la solicitud, no regresaba a main, sino a un procedimiento dentro de la cadena de 536 bytes de la pila. Este procedimiento intentaba ejecutar /bin/sh. Si lo lograba, el gusano disponía de un Shell que se ejecutaba en la máquina atacada.


El método 3 dependía de un error en el sistema de correo, send mail, que permitía al gusano enviar una copia del arrancador, además de la ejecución de este.


Una ves establecido el gusano intentaba romper con las contraseñas del usuario. Morris no tobo que realizar una gran investigación para poder llevar esto a cabo. Lo único que hizo fue pedirle a su padre, un experto en seguridad de la Natinal security Agency, encargada de romper los códigos, un ejemplar de un artículo clásico en el tema, que el propio padre de Morris y Ken Thompson escribieran una década antes en Bell Laboratories. Cada contraseña rota permitía que el gusano penetrara en otras máquinas donde el poseedor de la contraseña tuviera cuentas.


Cada vez que el gusano lograra el acceso a una nueva máquina verificaba si en ella existían copias activas del mismo. En tal caso la nueva copia salía, excepto una vez por cada siete que entraba a la máquina, tal vez en un intento por mantener al gusano en propagación incluso en el caso en que el administrador del sistema tuviera su propio gusano para engañar al gusano real. El uso de uno por cada siete creó un número enorme de gusanos y fue la razón por la que las máquinas infectadas fueron obligadas a parar: estaban totalmente infectadas por gusanos. Si Morris no hubiera hecho esto último y solo obligara a salir si encontraba otro gusano, tal vez este hubiera pasado inadvertido.


Morris fue capturado cuando uno de sus amigos habló con el reportero del área de computación del New York Times, John Markoff para intentar convencerlo de que todo había sido un accidente, que el gusano no provocaba daños y que el autor estaba arrepentido. El amigo dejó entre ver de manera inadvertida que la clave de acceso del responsable era RTM. La conversión de RTM al nombre del autor fue sencilla: solo había que ejecutar finger.

Ataques genéricos a la seguridad

La fallas descriptas arriba han sido arregladas, pero el común de los sistemas operativos continua siendo tan permeable como una coladera. La forma usual de probar la seguridad de un sistema es contratar un grupo de expertos, conocidos como el equipo tigre o equipo de penetración, para ver si pueden penetrar en él. Hebbar intentaron lo mismo con estudiantes graduados. Durante varios años, estos equipos de penetración han descubierto varias áreas en las que es probable que los sistemas tengan debilidades.


Al diseñar sistemas se debe asegurar que pueden resistir ataques de estos tipos.


Solicite páginas de memoria, espacio en disco y solo léalas. Muchos sistemas no las borran antes de asignarlas y podrían contener interesante información escrita por el anterior usuario.
Intente llamadas al sistema inválidas, o bien llamadas válidas con parámetros inválidos, o incluso llamadas válidas con parámetros válidos pero no razonables. Muchos sistemas pueden ser confundidos con facilidad.
Inicie la conexión al sistema y oprima entonces DEL, RUBOUT, O BREAK a la mitad de la secuencia de acceso. En ciertos sistemas el programa de verificación de la contraseña quedará eliminado y se considerará un acceso exitoso.
Intente modificar las complejas estructuras del sistema operativo que está en el espacio del usuario. En muchos sistemas, para abrir un archivo, el programa construye una enorme estructura de datos, la cual contiene el nombre del archivo y muchos otros parámetros, lo cual se transfiere al sistema. Al leer o escribir en un archivo, el sistema puede actualizar a veces la propia estructura. La modificación de estos campos puede causar estragos a la seguridad.
Engañe al usuario, escribiendo un programa que haga aparecer "login": En la pantalla y que después desaparezca. Muchos usuarios irán hacia la terminal y le indicarán su nombre y su contraseña de acceso, la cual registrará el programa para su diabólica maestro.
Busque manuales que digan "no lleve a cabo X" he intente tantas variaciones de X como sea posible.
Convenza a un programador del sistema para que modifique el sistema, con el fin de evitar ciertas verificaciones vitales de seguridad para cualquier usuario con su nombre de acceso. Este ataque se conoce como una trampa (trap door).
Si todo esto falla, el tacante debe encontrar a la secretaria del director del centro de cómputos y engañarla, o sobornarla. Es probable que la secretaria tenga un fácil acceso a todo tipo de información maravillosa y que por lo general se le page poco. No subestime los problemas que puede causar el personal.

Los Virus

Una categoría especial de ataque es el virus computacional, el cual se ha convertido en un enorme problema para muchos usuarios de computadoras. Un virus es un fragmento de programa que se añade a un programa legítimo con la intención de infectar a otros. Difiere de un gusano solo en el echo en que un virus está a cuesta de un programa existente, mientras que un gusano es un programa completo en si mismo.


Los virus, los gusanos intentan diseminarse y pueden crear un daño severo.


Un virus típico funciona de la manera siguiente. En primer lugar, la persona que escribe el virus produce un nuevo programa útil, que ha menudo es un juego para MS-DOS. Este programa contiene el código del virus oculto en él. El juego se envía a un sistema de boletines públicos, o bien se le ofrece gratis o a un módico precio en discos flexibles. Se anuncia el programa y las persona empiezan a cargarlo y usarlo. La construcción de un virus no es fácil, por lo que las personal que los realizan son brillantes en general y la calidad del juego o programa es con frecuencia excelente.


Al iniciar el programa, este comienza a examinar de inmediato todos los programas en binario del disco duro, para ver si ya están infectados. Si encuentra un programa no infectado, lo infecta al añadir el código del virus al final del archivo y re emplaza la primera instrucción con un salto al virus. Cuando el código del virus termina su ejecución, ejecuta las instrucciones que estaban antes en primer lugar y después salta a la segunda instrucción. De esta forma, cada vez que se ejecuta un programa infectado, este intenta infectar más programas.


Además de infectar a otros programas, un virus puede hacer otras cosas, como eliminar, modificar o cifrar archivos. Ciertos virus exhibían incluso una nota de extorsión en la pantalla, en la que indicaba al usuario que enviara $500 en una apartado postal en Panamá o debería sufrir la pérdida permanente de sus datos y daños al hardware.


También es posible que un virus infecte al sector de arranque del disco duro, con lo que sería imposible arrancar la computadora. Tal virus podría pedir una contraseña, la cual sería proporcionada por el autor del virus a cambio de dinero.


Los problemas con los virus son más fáciles de evitar que de curar. La vía más segura es comprar software original en tiendas responsables. La carga de software libre a partir de boletines o la utilización de copias piratas en discos flexibles es un camino hacia los problemas. Existen paquetes comerciales antivirus, pero algunos de estos solo buscan ciertos virus conocidos.


Un punto de vista más general es volver a dar formato al disco duro en su totalidad, incluyendo al sector de arranque.


La infección puede tornarse más difícil si el directorio donde residen los programas en binario tienen negado el acceso para escritura de los usuarios ordinarios. Esta técnica dificulta el hecho de que el virus modifique otros binarios. Aunque esto puede utilizarse en UNIX, no se puede aplicar a MS-DOS, puesto que el directorio de este último siempre se puede escribir.

Principios del diseño para la seguridad.

Los virus aparecen en mayor proporción en los sistemas de escritorio. En los sistemas más grandes, pueden aparecer otros problemas y se necesitan otros métodos para enfrentarlos. Saltzer y Schroeder (1975) han identificado varios principios generales que se pueden utilizar como una guía para el diseño de sistemas seguros. Algunas de sus ideas basadas en MULTICS son:


En primer lugar, el diseño del sistema debe ser público. Pensar que el intruso no conocerá la forma del funcionamiento del sistema es engañar a los diseñadores.
En segundo lugar, el estado predefinido debe ser el de no acceso. Los errores en donde se niega el acceso válido se reportan más rápido que los errores donde se permite el acceso no válido.
En tercer lugar, verifique la autorización actual. El sistema no debe verificar el permiso, determinar que el acceso está permitido y después abandonar esta información para su uso posterior. Muchos sistemas verifican el permiso al abrir un archivo y no después de abrirlo. Esto significa que un usuario que abra un archivo y lo tenga abierto por semanas seguirá teniendo acceso a él, incluso en el caso de que el propietario haya cambiado la protección del archivo.
En cuarto lugar, dé a cada proceso el mínimo privilegio posible. Si un editor solo tiene la autoridad para acceso al archivo por editar (lo cual se determina al llamar al editor), los editores con caballo de Troya no podrán hacer mucho daño. Este principio implica un esquema de protección de grado fino.
En quinto lugar, el mecanismo de protección debe ser simple, uniforme e integrado hasta las capas más bajas del sistema. El intento por dotar de seguridad ha un sistema inseguro ya existente es casi imposible. La seguridad, al igual que lo correcto de un sistema, no es una característica que se pueda añadir.
En sexto lugar, el esquema elegido debe ser psicológicamente aceptable. Si los usuarios sienten que la protección de sus archivos implica demasiado trabajo, simplemente no lo protegerán. Sin embargo, ellos se quejarán en voz alta si algo sale mal.

Autenticación del usuario.

Muchos de los esquemas de protección se basan en la hipótesis de que el sistema conoce la identidad de cada usuario. El problema de la identificación de los usuarios cuando están conectados al sistema se conoce como la autentificación del usuario.


Muchos de los métodos de autentificación se basan en la identificación de algo conocido por el usuario, algo que posee el usuario o algo que es el usuario.

Contraseña.

La forma de autentificación que más se utiliza es pedirle al usuario que escriba una contraseña. La protección mediante contraseña es fácil de comprender e implementar. En UNIX funciona de la siguiente manera. El programa de conexión pide al usuario su nombre y contraseña. La contraseña se cifra de inmediato. El programa de conexión lee entonces el archivo de contraseñas, que es una serie de reglones en ASCII, uno por cada usuario, hasta que encuentra la línea que contiene el nombre de la conexión del usuario. Si la contraseña (cifrada) contenida en esta línea concuerda con la contraseña cifrada recién escrita, se permite la entrada, y en caso contrario se prohibe.


La autentificación mediante contraseña es fácil de vencer. Uno puede leer con frecuencia acerca de grupos de bachillerato, o incluso de secundaria, quienes, con la ayuda de sus computadoras caseras, penetraron a un sistema de total secreto en una gigantesca corporación o agencia gubernamental. Casi siempre, la forma de penetración consiste en pruebas de combinaciones de nombres y contraseñas.


Morris y Thompson (1979) hicieron un estudio de las contraseñas en los sistemas UNIX. Compilaron una lista de todas las contraseñas probables: nombres, apellidos, nombre de calles, de ciudades, palabras de un diccionario de tamaño medio (también palabras deletreadas hacia atrás), números de licencias de conducir y cadenas cortas de caracteres arbitrarios.


Después cifraron cada una de estas mediante el conocido algoritmo de las contraseñas y verificaron si las contraseñas cifradas concordaban con las entradas de su lista. Más del 86% de todas las contraseñas aparecía en la lista.


Si todas las contraseñas contaran de siete caracteres elegidos al azar de los 95 caracteres en ASCII que se puede imprimir, el espacio de búsqueda sería de 957, a rededor de 7*1013. A mil cifrados por segundo se tomaría 2000 años el construir la lista ha verificar contra el archivo de contraseñas. Además, la lista ocuparía 20 millones de cintas magnéticas. El uso de contraseñas que contuvieran al menos un carácter en minúsculas, otro en mayúsculas y uno más especial y que tuvieran una longitud de al menos siete caracteres serían una gran mejora en las contraseñas elegidas por el usuario.


Aunque se considera imposible desde el punto de vista político que se pida a los usuarios la elección de contraseñas razonables, Morris y Thompson han descripto una técnica que deja ha su propio método (cifrar un gran número de contraseñas de antemano) casi sin utilidad. La idea consiste en asociar un número aleatorio de n bits a cada contraseña. El número aleatorio se modifica al cambiar la contraseña. Este número se guarda en el archivo de contraseñas en forma no cifrada, de modo que todos puedan leerlo. En vez de solo almacenar la contraseña cifrada en el archivo de contraseñas, primero se concatenan la contraseña y el número aleatorio y después se cifran juntos. Este resultado cifrado se almacena en el archivo de contraseñas.


Consideremos ahora las implicaciones del hecho de que un intruso que desea construir una lista de las probables contraseñas, las cifre y guarde los resultados en un archivo ordenado F de forma que cualquier contraseña cifrada pueda buscarse con facilidad. Si un intruso sospecha que Marilyn podría ser una contraseña, ya no es suficiente cifrar y colocar el resultado en F . él tiene que cifrar 2n cadenas, tales como Marilyn0000, Marilyn0001, Marilyn0002, etc. y almecenarlas todas en F . Esta técnica aumenta el tamaño de F por 2n. UNIX utiliza este método con n=12. Esto se conoce como salar el archivo de contraseñas. Algunas versiones de UNIX también hacen ilegible el archivo de contraseñas, aunque proporcionan un programa para examinar su contenido según se solicite, lo que añade al retraso suficiente para disminuir la velocidad de cualquier atacante.


Aunque este método ofrece protección contra los intrusos que intenta calcular de antemano una larga lista de contraseñas cifradas, protege muy poco a un usuario David cuya contraseña también sea David. Una forma de animar a la gente para que elija mejores contraseñas es que estas cuenten con el apoyo de la computadora. Algunas computadoras tienen un programa que genera palabras sin sentido pero de fácil pronunciación, como fotally, garbungy, o bipity, las cuales se pueden utilizar como contraseñas (de preferencia con alguna letra en mayúscula o algún carácter especial intercalado).


Otras computadoras piden a los usuarios que cambien su contraseña con regularidad, para limitar el daño hecho si se filtra una contraseña. La forma más extrema de este punto de vista es la contraseña de una sola vez. Al utilizar este tipo de contraseña, el usuario recibe un libro con una lista de contraseñas. Cada conexión con el sistema utiliza la siguiente contraseña de la lista. Si un intruso llegase a descubrir una contraseña, no la beneficiaría en mucho, puesto que la próxima vez se utilizaría otra. Se sugiere que el usuario no debe perder al libro de contraseñas.


Casi no es necesario mencionar que al momento de escribir una contraseña, la computadora no debe exhibir los caracteres que se escriban, para mantenerlo lejos de los ojos de los curiosos. Lo que es menos obvio es que la contraseña nunca debe almacenarse en forma no cifrada dentro de la computadora y ni siquiera la administración del centro de cómputo debe tener copias no cifradas. El mantenimiento de las contraseñas sin cifrar en cierto lugar representa una búsqueda de problemas.


Una variante de la idea de contraseña es pedirla a cada usuario que escriba una larga lista de preguntas y respuestas almacenadas en la computadora en forma críptica. La pregunta debe elegirse de tal forma que el usuario no necesite escribirlas. Las preguntas usuales son:


Quién es la hermana de Jonn?
En qué calle estaba tu primaria?
Qué enseñaba la señora Lopez?


Al momento de la conexión, la computadora pregunta alguna de ellas al azar y verifica la respuesta.


Otra variante es el de retro-respuesta. Si se utiliza este método, el usuario elige un algoritmo al firmar como usuario; por ejemplo, x2. Cuando el usuario se conecta, la computadora escribe un argumento, 7 por EJ, en cuyo caso el usuario escribe 49. El algoritmo puede ser distinto en la mañana y en la tarde, en distintos días en la semana, desde distintas terminales, etc.

Identificación física.

Un enfoque totalmente distinto del problema de la autorización es la verificación de si el usuario tiene cierto elemento, que por lo general es una tarjeta plástica con una cinta magnética en ella. La tarjeta se inserta en la terminal, la cual verifica de cuál tarjeta se trata. Este método se puede combinar con una contraseña, por lo que un usuario solo puede conectarse al sistema si tiene una tarjeta y conoce la contraseña. Los cajeros automáticos funcionan de esta manera.


Otro punto de vista consiste en la medición de características físicas difíciles de reproducir. Por ejemplo una lectora de huellas digitales o vocales en la terminal podría verificar la identificación del usuario. La búsqueda es más rápida si el usuario le indica a la computadora quien es, en ves de hacer que la computadora compare la huella digital en toda la base de datos. El reconocimiento visual directo no es posible por el momento, pero lo será algún día.


Otra técnica es el análisis de la firma. El usuario firma con una pluma especial conectada a la terminal y la computadora lo compara con un espécimen conocido, almacenado en línea. Algo todavía mejor es comparar los movimientos de las plumas. Un buen falsificador podría copiar la firma, pero no tendrá la más mínima idea del orden exacto en que se hicieron los trazos.


El análisis de la longitud de los dedos es muy práctico, aunque sea sorprendente. Al utilizar este método, cada terminal tiene un dispositivo en forma de guante (con un resorte y una placa de presión en la punta), en donde el usuario inserta la mano y entonces se mide la longitud de todos los dedos para verificarla contra la base de datos.


Otro esquema podría ser el de una aguja y un espectrógrafo. Se le pediría al usuario que presionara su dedo pulgar contra la aguja para así poder extraer una gota de sangre para un análisis espectrográfico. El punto aquí que cualquier sistema de autentificación debe ser aceptable, desde el punto de vista psicológico, por la comunidad de usuarios. La medición de los dedos podría no provocar problemas, pero incluso algo tan poco impertinente como el almacenamiento de las huellas digitales en línea podría no ser aceptable por muchas personas.

Medidas preventivas


En las instalaciones de cómputo que sí se preocupan por la seguridad, algo que ocurre con frecuencia el día posterior a la entrada de algún intruso y que ha causado un daño mayor, es que realizan pasos tendientes a hacer más difícil las entradas no autorizadas. Por ejemplo, podría permitirse a cada usuario que sólo se conectara desde una terminal específica y sólo durante ciertos días de la semana u horas del día.


Las líneas telefónicas se pueden utilizar de la manera siguiente. Cualquiera puede llamar y conectarse al sistema, pero después de una conexión con éxito, el sistema rompe de inmediato la conexión y llama de regreso al usuario mediante un número acordado de antemano. Esta medida indica que el usuario no podrá intentar penetrar desde cualquier línea telefónica; solo lo logrará desde el teléfono del usuario. En todo caso, con o sin llamada de regreso, el sistema podría tomarse 10 seg. para verificar las contraseñas escritas en una línea telefónica, para incrementar ese tiempo después de varios intento infructuosos de conexión y así reducir la taza de intentos de un intruso. Después de tres intentos fallidos de conexión la línea debería desconectarse durante 10 min. y notificarse al personal de seguridad.


Todas las entradas al sistema deben registrarse. Cuando un usuario se conecta oal sistema, éste debe informar la hora y terminal de la última conexión de forma que pueda detectar posibles intentos de sabotaje.


El siguiente paso es tender trampas para atrapar a los intrusos. Un esquema sencillo es tener un nombre especial de conexión con una sencilla contraseña (por ej. nombre de la conexión: huésped; contraseña huésped). Siempre que alguien desee conectarse al sistema con este nombre, se notifica de inmediato a los especialistas del sistema de seguridad. Otras trampas podrían ser errores fáciles de encontrar en el sistema operativo y objetos similares, diseñados con el propósito de agarrar a los intrusos.

Dominios de protección.

Un sistema de cómputos contiene muchos objetos que necesitan protección. Estos objetos pueden ser el hardware, la CPU, los segmentos de memoria, terminales, unidades de disco o impresoras; o bien ser del software, como los proceso, archivos, bases de datos o semáforos.


Cada objeto tiene un único nombre mediante el cual se la hace referencia y un conjunto de operaciones que se pueden realizar en él. READ y WRITE son operaciones adecuadas para un archivo; UP y DOWN tiene sentido en un semáforo.


Es evidente que se necesita una vía para prohibir el acceso de los procesos a los objetos a los que no tiene permitido dicho acceso. Además, este mecanismo debe posibilitar la restricción de los procesos a un subconjunto de operaciones legales en caso necesario. Por ejemplo, puede permitirse que el proceso A lea el archivo F, pero no escriba en él.


Para tener una forma de analizar los distintos mecanismos de protección, es conveniente presentar el concepto de dominio. Un dominio es un conjunto de parejas (objeto, derechos). Cada pareja determina un objeto y cierto subconjunto de las operaciones que se pueden llevar a cabo en él. Un derecho es, en este contexto, el permiso para realizar alguna de las operaciones.


Una pregunta importante es la forma en que el sistema lleva un registro de los objetos que pertenecen a un dominio dado. Al menos una teoría, uno puede imaginar una enorme matriz, en la que los renglones son los dominio y las columnas son los objetos. Cada cuadro contiene los derechos correspondientes al objeto en ese dominio. Con esta matriz y el número de dominio activo, el sistema puede determinar si se permite el acceso de cierta forma a un objeto dado desde un domino específico.

Modelos de protección

Han sido desarrollados varios modelos genéricos de protección de recursos para sistemas
operativos, cuyo objetivo es controlar el acceso de los usuarios (sujetos) a los recursos del
sistema operativo, que deben ser protegidos (objetos). En un sistema operativo tradicional los
objetos a proteger son recursos (ficheros, etc.) y los sujetos que acceden son procesos o
usuarios. En la perspectiva de un sistema operativo orientado a objetos, ambos elementos son
objetos (del propio SO o creados por el usuario). El acceso al objeto consistirá en el envío de
un mensaje al mismo (invocación de una operación).
En los siguientes puntos se describen brevemente algunos de los modelos de protección más
importantes.

 Modelo de la matriz de acceso.

Este modelo fue propuesto por Lampson [4] como una descripción generalizada de
mecanismos de protección en sistemas operativos. Es el modelo más utilizado, del que existen
numerosas variaciones, especialmente en su implementación.
Seguridad en un Sistema Operativo Orientado a Objetos
El modelo considera un conjunto de recursos, denominados objetos, cuyo acceso debe ser
controlado y un conjunto de sujetos que acceden a dichos objetos. Existe también un
conjunto de permisos de acceso que especifica los diferentes permisos que los sujetos pueden
tener sobre los objetos (normalmente lectura, escritura, etc., aunque pueden ser diferentes, en
general, dependiendo de las operaciones que puedan realizarse con el objeto).
Se trata de especificar para cada pareja (sujeto, objeto), los permisos de acceso que el sujeto
tiene sobre el objeto. Esto se representa mediante una matriz de acceso M que enfrenta todos
los sujetos con todos los objetos. En cada celda M[i, j] se indican los permisos de acceso
concretos que tiene el sujeto i sobre el objeto j.
La siguiente figura representa una matriz de acceso.
En un sistema operativo orientado a objetos (SOOO) los permisos almacenados en M[i, j]
serían las operaciones (mensajes) que puede invocar el objeto i sobre el objeto j. El resto de
las operaciones que tenga definidas el objeto j y no aparezcan en M[i,j] no pueden ser usadas
por el objeto i. Por otra parte, todo lo que existe en el sistema son objetos, por tanto sería una
matriz cuadrada de objetos × objetos, que formaría un espacio disperso, dado que cada objeto
sólo tiene acceso a operaciones de un pequeño número de objetos de todo el sistema.

Modelos de seguridad en retículo

Es un modelo derivado de los sistemas militares de seguridad, del cual existen muchas
variantes. En este modelo se asigna a los sujetos una acreditación (categoría de sujeto:
Capitán, General, etc.) y se asigna a los objetos una clasificación (tipo del objeto:
confidencial, top-secret, etc.). Por otro lado existen unas reglas que rigen la clasificación. En
función de estas reglas se obtendrán diferentes modelos.
Un ejemplo de este tipo de modelos es el modelo de Bell y LaPadula [5], que puede
resumirse con las siguientes reglas:
- Ningún usuario puede leer información clasificada por encima de su nivel de
acreditación.
- Ningún usuario puede rebajar la clasificación de la información.
En este tipo de modelos se hace una clasificación de los objetos en tipos, y de los sujetos en
categorías, y en función de ello se establecen controles de acceso, representados mediante
reglas que definen una ordenación con unas propiedades especiales, para mantener la
seguridad.

Modelo del flujo de información

El modelo del flujo de información está basado en el concepto de seguridad en retículo,
aunque en lugar de controlar el acceso a los recursos mediante una serie de reglas, lo hace de
una manera más general indicando los flujos de información permitidos entre clases de
seguridad.
Tanto este modelo como el anterior son de acceso no discrecional, pues el acceso está en
función de la clasificación del objeto, frente al acceso discrecional de la matriz de control en la
que cada objeto individual restringe o no el acceso a cada uno de los objetos restantes. Se
trata por ello, de un modelo más flexible a la hora de implementar políticas de seguridad, y
por tanto es más interesante.

Como estar mas informado sobre la seguridad informática

Software libre


El software libre (en inglés free software, esta denominación también se confunde a veces con gratis por el doble sentido del inglés free en castellano) es la denominación del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente. Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado.

 El software libre suele estar disponible gratuitamente, o al precio de costo de la distribución a través de otros medios; sin embargo no es obligatorio que sea así, por lo tanto no hay que asociar software libre a "software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente ("software comercial"). Análogamente, el "software gratis" o "gratuito" incluye en ocasiones el código fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa.


Tampoco debe confundirse software libre con "software de dominio público". Éste último es aquel software que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software sería aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de este, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es del dominio público.

Tipos de licencias

Una licencia es aquella autorización formal con carácter contractual que un autor de un software da a un interesado para ejercer "actos de explotación legales". Pueden existir tantas licencias como acuerdos concretos se den entre el autor y el licenciatario. Desde el punto de vista del software libre, existen distintas variantes del concepto o grupos de licencias:

Licencias GPL

Una de las más utilizadas es la Licencia Pública General de GNU (GNU GPL). El autor conserva los derechos de autor (copyright), y permite la redistribución y modificación bajo términos diseñados para asegurarse de que todas las versiones modificadas del software permanecen bajo los términos más restrictivos de la propia GNU GPL. Esto hace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser GPL.


Es decir, la licencia GNU GPL posibilita la modificación y redistribución del software, pero únicamente bajo esa misma licencia. Y añade que si se reutiliza en un mismo programa código "A" licenciado bajo licencia GNU GPL y código "B" licenciado bajo otro tipo de licencia libre, el código final "C", independientemente de la cantidad y calidad de cada uno de los códigos "A" y "B", debe estar bajo la licencia GNU GPL.


En la práctica esto hace que las licencias de software libre se dividan en dos grandes grupos, aquellas que pueden ser mezcladas con código licenciado bajo GNU GPL (y que inevitablemente desaparecerán en el proceso, al ser el código resultante licenciado bajo GNU GPL) y las que no lo permiten al incluir mayores u otros requisitos que no contemplan ni admiten la GNU GPL y que por lo tanto no pueden ser enlazadas ni mezcladas con código gobernado por la licencia GNU GPL.


En el sitio web oficial de GNU hay una lista de licencias que cumplen las condiciones impuestas por la GNU GPL y otras que no.<3>


Aproximadamente el 60% del software licenciado como software libre emplea una licencia GPL.


Licencias AGPL
Artículo principal: Licencias AGPL
La Licencia Pública General de Affero (en inglés Affero General Public License, también Affero GPL o AGPL ) es una licencia copyleft derivada de la Licencia Pública General de GNU diseñada específicamente para asegurar la cooperación con la comunidad en el caso de software que corra en servidores de red.


La Affero GPL es íntegramente una GNU GPL con una cláusula nueva que añade la obligación de distribuir el software si éste se ejecuta para ofrecer servicios a través de una red de ordenadores.


La Free Software Foundation recomienda que el uso de la GNU AGPLv3 sea considerado para cualquier software que usualmente corra sobre una red.<4>


Licencias estilo BSD

Llamadas así porque se utilizan en gran cantidad de software distribuido junto a los sistemas operativos BSD. El autor, bajo tales licencias, mantiene la protección de copyright únicamente para la renuncia de garantía y para requerir la adecuada atribución de la autoría en trabajos derivados, pero permite la libre redistribución y modificación, incluso si dichos trabajos tienen propietario. Son muy permisivas, tanto que son fácilmente absorbidas al ser mezcladas con la licencia GNU GPL con quienes son compatibles. Puede argumentarse que esta licencia asegura “verdadero” software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre. Otras opiniones están orientadas a destacar que este tipo de licencia no contribuye al desarrollo de más software libre (normalmente utilizando la siguiente analogía: "una licencia BSD es más libre que una GPL si y sólo si se opina también que un país que permita la esclavitud es más libre que otro que no la permite").

Licencias estilo MPL y derivadas

Esta licencia es de Software Libre y tiene un gran valor porque fue el instrumento que empleó Netscape Communications Corp. para liberar su Netscape Communicator 4.0 y empezar ese proyecto tan importante para el mundo del Software Libre: Mozilla. Se utilizan en gran cantidad de productos de software libre de uso cotidiano en todo tipo de sistemas operativos. La MPL es Software Libre y promueve eficazmente la colaboración evitando el efecto "viral" de la GPL (si usas código licenciado GPL, tu desarrollo final tiene que estar licenciado GPL). Desde un punto de vista del desarrollador la GPL presenta un inconveniente en este punto, y lamentablemente mucha gente se cierra en banda ante el uso de dicho código. No obstante la MPL no es tan excesivamente permisiva como las licencias tipo BSD. Estas licencias son denominadas de copyleft débil. La NPL (luego la MPL) fue la primera licencia nueva después de muchos años, que se encargaba de algunos puntos que no fueron tenidos en cuenta por las licencias BSD y GNU. En el espectro de las licencias de software libre se la puede considerar adyacente a la licencia estilo BSD, pero perfeccionada.


Copyleft

Hay que hacer constar que el titular de los derechos de autor (copyright) de un software bajo licencia copyleft puede también realizar una versión modificada bajo su copyright original, y venderla bajo cualquier licencia que desee, además de distribuir la versión original como software libre. Esta técnica ha sido usada como un modelo de negocio por una serie de empresas que realizan software libre (por ejemplo MySQL); esta práctica no restringe ninguno de los derechos otorgados a los usuarios de la versión copyleft. También podría retirar todas las licencias de software libre anteriormente otorgadas, pero esto obligaría a una indemnización a los titulares de las licencias en uso. En España, toda obra derivada está tan protegida como una original, siempre que la obra derivada parta de una autorización contractual con el autor. En el caso genérico de que el autor retire las licencias "copyleft", no afectaría de ningún modo a los productos derivados anteriores a esa retirada, ya que no tiene efecto retroactivo. En términos legales, el autor no tiene derecho a retirar el permiso de una licencia en vigencia. Si así sucediera, el conflicto entre las partes se resolvería en un pleito convencional.



Ventajas del software libre

 Bajo costo de adquisición: Se trata de un software económico ya que permite un ahorro de grandes cantidades en la adquisición de las licencias.
Innovación tecnológica: Esto se debe a que cada usuario puede aportar sus conocimientos y su experiencia y asi decidir de manera conjunta hacia donde se debe dirigir la evolución y el desarrollo del software. Este es un gran avance en la tecnología mundial.
Independencia del proveedor: Al disponer del código fuente, se garantiza una independencia del proveedor que hace que cada empresa o particular pueda seguir contribuyendo al desarrollo y los servicios del software.
Escrutinio público: Esto hace que la corrección de errores y la mejora del producto se lleven a cabo de manera rápida y eficaz por cada uno de los usuarios que lleguen a utilizar el producto.
Adaptación del software: Esta cualidad resulta de gran utilidad para empresas e industrias específicas que necesitan un software personalizado para realizar un trabajo específico y con el software libre se puede realizar y con costes mucho más razonables.
Lenguas: Aunque el software se cree y salga al mercado en una sola lengua, el hecho de ser software libre facilita en gran medida su traducción y localización para que usuarios de diferentes partes del mundo puedan aprovechar estos beneficios.

¿Qué es un Sistema Operativo?


En Breve
■Un Sistema Operativo (SO) es el software básico de una computadora que provee una interfaz entre el resto de programas del ordenador, los dispositivos hardware y el usuario.
■Las funciones básicas del Sistema Operativo son administrar los recursos de la máquina, coordinar el hardware y organizar archivos y directorios en dispositivos de almacenamiento.
■Los Sistemas Operativos más utilizados son Dos, Windows, Linux y Mac. Algunos SO ya vienen con un navegador integrado, como Windows que trae el navegador Internet Explorer.


Definición de Sistema Operativo

El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc.


En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al sistema.


Clasificación de los Sistemas Operativos

Los sistemas operativos pueden ser clasificados de la siguiente forma:


Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo.
Multiprocesador: soporta el abrir un mismo programa en más de una CPU.
Multitarea: Permite que varios programas se ejecuten al mismo tiempo.
Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo.
Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real.

Cómo funciona un Sistema Operativo
Los sistemas operativos proporcionan una plataforma de software encima de la cual otros programas, llamados aplicaciones, puedan funcionar. Las aplicaciones se programan para que funcionen encima de un sistema operativo particular, por tanto, la elección del sistema operativo determina en gran medida las aplicaciones que puedes utilizar.


Los sistemas operativos más utilizados en los PC son DOS, OS/2, y Windows, pero hay otros que también se utilizan, como por ejemplo Linux.

Cómo se utiliza un Sistema Operativo

Un usuario normalmente interactúa con el sistema operativo a través de un sistema de comandos, por ejemplo, el sistema operativo DOS contiene comandos como copiar y pegar para copiar y pegar archivos respectivamente. Los comandos son aceptados y ejecutados por una parte del sistema operativo llamada procesador de comandos o intérprete de la línea de comandos. Las interfaces gráficas permiten que utilices los comandos señalando y pinchando en objetos que aparecen en la pantalla


Ejemplos de Sistema Operativo
A continuación detallamos algunos ejemplos de sistemas operativos:


Familia Windows
Windows 95
Windows 98
Windows ME
Windows NT
Windows 2000
Windows 2000 server
Windows XP
Windows Server 2003
Windows CE
Windows Mobile
Windows XP 64 bits
Windows Vista (Longhorn)


Familia Macintosh
Mac OS 7
Mac OS 8
Mac OS 9
Mac OS X


Familia UNIX
AIX
AMIX
GNU/Linux
GNU / Hurd
HP-UX
Irix
Minix
System V
Solaris
UnixWare