6.1 Concepto y objetivos de protección
La proteccion es un mecanismo control
de acceso de los programas, procesos o usuarios al sistema o recursos.
Hay importantes razones para proveer
proteccion. La mas obvia es la necesidad de prevenirse de violaciones
intencionales de acceso por un usuario. Otras de importancia son, la
necesidad de asegurar que cada componente de un programa, use solo los
recursos del sistema de acuerdo con las politicas fijadas para el uso de esos
recursos.
Un recurso desprotegido no puede
defenderse contra el uso no autorizado o de un usuario incompetente. Los
sistemas orientados a la proteccion proveen maneras de distinguir entre uso
autorizado y desautorizado.
Objetivos
1.- Inicialmente proteccion del SO
frente a usuarios poco confiables.
2.- Proteccion: control para que cada
componente activo de un proceso solo pueda acceder a los recursos
especificados, y solo en forma congruente con la politica establecida.
3.- La mejora de la proteccion
implica tambien una mejora de la seguridad.
4.- Las politicas de uso se
establecen:
5.- Principio de separacion entre
mecanismo y politica:
6.- La politica puede variar
• Dependiendo de la aplicacion,
• A lo largo del tiempo.
7.-La proteccion no solo es cuestion
del administrador, sino tambien del usuario.
8.-El sistema de proteccion debe:
|
6.2 Funciones del sistema de protección
Control de
acceso que hace referencia a las caracteristicas de seguridad que controlan
quien puede obtener acceso a los recursos de un sistema operativo. Las
aplicaciones llaman a las funciones de control de acceso para establecer
quien puede obtener acceso a los recursos especificos o controlar el acceso a
los recursos proporcionados por la aplicacion. Un sistema de proteccion debera tener la flexibilidad suficiente para poder imponer una diversidad de politicas y mecanismos. Existen varios mecanismos que pueden usarse para asegurar los archivos, segmentos de memoria, CPU, y otros recursos administrados por el Sistema Operativo. Por ejemplo, el direccionamiento de memoria asegura que unos procesos puedan ejecutarse solo dentro de sus propios espacios de direccion. El timer asegura que los procesos no obtengan el control de la CPU en forma indefinida. La proteccion se refiere a los mecanismos para controlar el acceso de programas, procesos, o usuarios a los recursos definidos por un sistema de computacion. Seguridad es la serie de problemas relativos a asegurar la integridad del sistema y sus datos. Hay importantes razones para proveer proteccion. La mas obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Otras de importancia son, la necesidad de asegurar que cada componente de un programa, use solo los recursos del sistema de acuerdo con las politicas fijadas para el uso de esos recursos. Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la proteccion proveen maneras de distinguir entre uso autorizado y desautorizado. Mecanismos y El sistema de proteccion tiene la funcion de proveer un mecanismo para el fortalecimiento de las politicas que gobiernan el uso de recursos. Tales politicas se pueden establecer de varias maneras, algunas en el diseno del sistema y otras son formuladas por el administrador del sistema. Otras pueden ser definidas por los usuarios individuales para proteger sus propios archivos y programas. Las politicas son diversas, dependen de la aplicacion y pueden estar sujetas a cambios a lo largo del tiempo. Un principio importante es la separacion de politicas de los mecanismos. ‘Los mecanismos determinan como algo se hara. Las politicas deciden que se hara'. La separacion es importante para la flexibilidad del sistema. Dentro de las funciones del sistema de proteccion del sistema operativo encontramos: • Asegurarse que todos los accesos a los recursos del sistema estan controlados |
6.3 Implantación de matrices de acceso
Los derechos de acceso definen que
acceso tienen varios sujetos sobre varios objetos.Los sujetos a cceden a los
objetos. Los objetos son entidades que contienen informacion.
Los objetos pueden ser:
Los objetos estan protegidos contra
los sujetos. Las autorizaciones a un sistema se conceden a los sujetos.
Los sujetos pueden ser varios tipos
de entidades:
Los derechos de acceso mas
comunes son:
Una forma de implementacion es
mediante una matriz de control de acceso con:
Una matriz de control de acceso debe
ser muy celosamente protegida por el S. O.
Dominios de protección
Un sistema de computos contiene
muchos objetos que necesitan proteccion. 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 semaforos.
Cada objeto tiene un unico nombre
mediante el cual se la hace referencia y un conjunto de operaciones que se
pueden realizar en el. READ y WRITE son operaciones adecuadas para un
archivo; UP y DOWN tiene sentido en un semaforo.
Es evidente que se necesita una via
para prohibir el acceso de los procesos a los objetos a los que no tiene
permitido dicho acceso. Ademas, este mecanismo debe posibilitar la
restriccion 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 el.
Para tener una forma de analizar los
distintos mecanismos de proteccion, 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 el. 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 teoria, 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 numero de dominio activo, el sistema puede determinar si se
permite el acceso de cierta forma a un objeto dado desde un domino
especifico.
Un dominio es un conjunto de
parejas (objeto, derechos):
Un derecho es el permiso para
realizar alguna de las operaciones. Es posible que un objeto se encuentre en
varios dominios con “distintos” derechos en cada dominio.
Un proceso se ejecuta en
alguno de los dominios de proteccion:
Los procesos pueden alternar entre
los dominios durante la ejecucion. Una llamada al S. O. provoca una
alternancia de dominio. En algunos S. O. los dominios se llaman anillos .
Una forma en la que el S. O. lleva un
registro de los objetos que pertenecen a cada dominio es mediante una matriz
:
Matriz de acceso
El modelo de proteccion del sistema
se puede ver en forma abstracta como una matriz, la matriz de acceso.
Una matriz de acceso es una
representacion abstracta del concepto de dominio de proteccion.
Este modelo fue propuesto por Lampson
[4] como una descripcion generalizada de mecanismos de proteccion en sistemas
operativos. Es el modelo mas utilizado, del que existen numerosas
variaciones, especialmente en su implementacion.
Los elementos basicos del modelo son
los siguientes:
• Sujeto: Una entidad
capaz de acceder a los objetos. En general, el concepto de sujeto es
equiparable con el de proceso. Cualquier usuario o aplicacion consigue
acceder en realidad a un objeto por medio de un proceso que representa al
usuario o a la aplicacion.
• Objeto: Cualquier cosa
cuyo acceso debe controlarse. Como ejemplo se incluyen los archivos, partes
de archivos, programas y segmentos de memoria.
• Derecho de acceso: la
manera en que un sujeto accede a un objeto. Como ejemplo estan Leer,
Escribir y Ejecutar.
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 tambien 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.
El mecanismo de proteccion es la
matriz, junto con todos los elementos que se han de anadir para que se
cumplan de manera efectiva todas las restricciones de acceso a los objetos.
1.- Copiar derechos de acceso
de una celda a otra dentro de la misma columna. Consiste en pasar el derecho
de acceso a un objeto de un Dominio que lo tiene, a otro donde originalmente
no lo tenia. Se senala con un asterisco (*).
• Copia ilimitada con
propagacion del propio derecho de copia.
• Copia limitada sin
propagacion.
• Movimiento de derecho.
2.- Dueno. Un proceso ejecutandose en un dominio que tiene
derecho de “dueno” sobre un objeto, puede repartir cualquier derecho de
acceso sobre cualquier dominio para dicho objeto.
3.- Control . Opera solo sobre dominios. Ejercer el control
sobre un dominio implica que se puede quitar cualquier derecho sobre
una fila de dominio.
• La MA tambien ha de ser
protegida.
Implementacion de la Matriz de Acceso
Tabla Global Sencilla. Se
almacena una lista de ternas {<dominio, objeto, permisos>...}.
Como el numero de objetos y dominios
es posiblemente muy grande, se deberia guardar en memoria virtual.
Lista de acceso para objetos(ACL)
Se expresa la MA por columnas
{<dominio, permisos>, ...}. Se descartan las entradas vacias.
Se puede crear una lista de permisos
por defecto para hacer mas facil su uso.
Dado que cada vez que se va a usar un
objeto hay que comprobar si hay o no permiso para hacerlo, es logico poner la
ACL alli donde esten descritos los atributos del objeto.
Una forma de implementar las ACL
consiste en:
Lista de Capacidades
Se expresa la MA por filas. Cada
dominio tiene una lista de la forma {<objeto, permisos>, ...}
Para identificar el objeto se usa o
bien su nombre logico, o un puntero a el (la estructura de datos que le
describe); a esta direccion se la llama capacidad .
Solo se podra realizar la operacion M
sobre el objeto O si se dispone de la capacidad (puntero) al objeto.
Mecanismo de Cerradura-Llave
Cada objeto tiene una lista de
patrones llamados cerradura .
Cada dominio tiene una lista de
patrones llamados claves .
Un proceso que se ejecuta en un
dominio solo tendra acceso a un objeto si el dominio contiene una llave que
coincida con una de las cerraduras.
Comparacion
La tabla global es una matriz
dispersa, es ineficiente para su almacenamiento.
ACL →
Cuando se accede a un objeto es facil determinar si hay o no permiso para
usarlo.
Capacidades → Las ACL estan distribuidas, es dificil saber
cuales son los derechos de acceso para un proceso, cosa que si se puede hacer
con la lista de capacidades.
Los sistemas reales suelen usar una
mezcla de todos.
Ej. UNIX: Se abre un fichero, se
verifica en la ACL si tiene permiso o no. Si lo tiene, se consigue un descriptor
de fichero, es decir una capacidad que sera lo que se use a partir de
entonces.
|
6.4 Protección basada en el lenguaje
La protección se logra con la ayuda del núcleo
del SO que valida los intentos de acceso a recursos. El gasto de inspeccionar
y validar todos los intentos de acceso a todos los recursos es muy grande,
por lo tanto debe ser apoyada por hardware. Al aumentar la complejidad del
SO, se deben refinar los mecanismos de protección. Los sistemas de
protección, no solo se preocupan de si puedo acceder a un recurso, sino
también de cómo lo accedo, por lo tanto los diseñadores de aplicaciones deben
protegerlos, y no solo el SO. Los diseñadores de aplicaciones mediante
herramientas de los lenguajes de programación pueden declarar la protección
junto con la tipificación de los datos.
Ventajas:
Diferencias entre las distintas formas de protección:
La especificación de protección en un lenguaje de programación permite describir en alto nivel las políticas de asignación y usode recursos.El programador de aplicaciones necesita un mecanismo de control de acceso seguro y dinámico para distribuir capacidades a losrecursos del sistema entre los procesos de usuario. Las construcciones que permiten al programador declarar las restricciones tienen tres operaciones básicas
Protección en java 2
La protección que se ofrece en los sistemas de
computación existentes casi siempre se ha logrado con la ayuda del núcleo de
un sistema operativo, que actúa como agente de seguridad que inspecciona y
valida cada intento por acceder a un recurso protegido. Puesto que la
validación de todos los accesos puede dar pie a un gasto extra considerable,
debemos apoyarla con hardware para reducir el costo de cada validación o bien
debemos aceptar que el diseñador del sistema podría inclinarse por sacrificar
los objetivos de la protección. Es difícil satisfacer todos estos objetivos
si los mecanismos de soporte con que se cuenta restringen la flexibilidad
para implementar diversas políticas de protección.
A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de más alto nivel con el usuario, lo objetivos de la protección se han vuelto mucho más refinados. En esta refinación observamos que los diseñadores de los diseñadores de los sistemas de protección se han apoyado mucho en ideas que se originaron en los lenguajes de programación y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de protección ahora se ocupan no sólo de la identidad de un recurso al cual se intenta acceder, sino también de la naturaleza funcional de ese acceso. En los sistemas de protección más nuevos, el interés en la función que se invocará se extiende más allá de un conjunto de funciones definidas por el sistema, como los métodos de acceso a archivos estándar, para incluir funciones que también podrían ser definidas por el usuario. Las políticas para el uso de recursos también podrían variar, dependiendo de la aplicación, y podrían cambiar con el tiempo. Por estas razones, la protección ya no puede considerarse como un asunto que sólo concierne al diseñador de un sistema operativo; también debe estar disponible como herramienta que el diseñador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicación contra intervenciones o errores.
Aquí es donde los lenguajes de
programación entran en escena. Especificar el control de acceso deseado a un
recurso compartido en un sistema es hacer una declaración acerca del recurso.
Este tipo de declaración se puede integrar en un lenguaje mediante una
extensión de su mecanismo de tipificación. Si se declara la protección junto
con la tipificación de los datos, el diseñado de cada subsistema puede
especificar sus necesidades de protección así debería darse directamente
durante la redacción del programa, y en el lenguaje en el que el programa
mismo se expresa. Este enfoque tiene varias ventajas importantes:
Las necesidades de protección se
declaran de forma sencilla en vez de programarse como una secuencia de
llamadas a procedimientos de un sistema operativo.
Las necesidades de protección pueden
expresarse independientemente de los recursos que ofrezca un sistema
operativo en particular.
El diseñador de un subsistema no
tiene que proporcionar los mecanismos para hacer cumplir la protección.
Una notación declarativa es natural
porque los privilegios de acceso están íntimamente relacionados con el
concepto lingüístico de tipo de datos.
Hay diversas técnicas que una
implementación de lenguaje de programación puede utilizar para hacer cumplir
la protección, pero cualquiera de ellas deberá depender hasta cierto punto
del grado de soporte de una máquina subyacente y su sistema operativo.
¿Qué ventajas relativas tiene
entonces el cumplimiento basado exclusivamente en un núcleo, en comparación
con el cumplimiento forzado en gran medida por un compilador?
Seguridad: La obligación del cumplimiento
por un núcleo ofrece un mayor grado de seguridad del sistema de protección
mismo, que el que ofrece la generación de código de verificación de
protección por un compilador. En un esquema apoyado por compilador, la
seguridad depende de lo correcto que sea el traductor, de algún mecanismo
subyacente de gestión de almacenamiento que proteja los segmentos desde los
cuales se ejecuta el código compilador y, en última instancia, de la
seguridad de los archivos desde los que se carga el programa.
Flexibilidad: Hay límites a la
flexibilidad de un núcleo de protección para implementar una política
definida por el usuario, aunque podría proporcionar recursos suficientes para
que el sistema haga cumplir sus propias políticas. Con un lenguaje de
programación, se puede declarar la política de protección y hacerse cumplir
según sea necesario en una implementación.
Eficiencia: Se logra la eficiencia máxima cuando hardware apoya directamente el cumplimiento de la protección. En la medida en que se requiera soporte de software, el cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar el cumplimiento del acceso estático fuera de línea en el momento de la compilación. En síntesis, la especificación de la protección en un lenguaje de programación permite describir un alto nivel de políticas de asignación y uso de recursos. |
6.5 Concepto de seguridad
Los terminos seguridad y proteccion
se utilizan en forma indistinta. Sin embargo, es util hacer una distincion
entre los problemas generales relativos a la garantia de que los archivos no
sea leidos o modificados por personal no autorizado, lo que incluye aspectos
tecnicos, de administracion, legales y politicos, por un lado y los sistemas
especificos del sistema operativo utilizados para proporcionar la seguridad,
por el otro. Para evitar la confusion, utilizaremos el termino seguridad para
referirnos al problema general y el termino mecanismo de proteccion para
referirnos a los mecanismos especificos del sistema operativo utilizado para
resguardar la informacion de la computadora. Sin embargo, la frontera entre
ellos no esta bien definida.
La seguridad tiene muchas facetas.
Dos de las mas importantes son la perdida de datos y los intrusos. Algunas de
las causas mas 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
telecomunicacion o errores en el programa.
• Errores Humanos: Entrada
incorrecta de datos, mal montaje de las cintas o el disco, ejecucion
incorrecta del programa, perdida de cintas o discos.
La mayoria 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 mas interesante es que
hacer con los intrusos. Estos tienen dos variedades. Los intrusos pasivos
solo desean leer archivos que no estan autorizados a leer.
Los
intrusos activos son mas crueles: Desean hacer cambios no autorizados a los
datos. Si se desea disenar un sistema seguro contra los intrusos, es
importante tener en cuenta el tipo de intruso con el que se desea tener
proteccion. Algunas de las categorias comunes son:
• Curiosidad casual de
usuarios no tecnicos. Muchas personas tienen en sus escritorios
terminales para sistemas con tiempo compartido y, por la naturaleza humana,
algunos de ellos leeran el correo electronico de los demas u otros archivos,
si no existen barreras en frente de ellos. Por ejemplo la mayoria de los
sistema UNIS tienen pre definido que todos los archivos se pueden leer de
manera publica.
• Conocidos husmeando.
Algunos estudiantes, programadores de sistemas, operadores y demas personal
tecnico consideran como un reto personal romper la seguridad del sistema de
computo local. A menudo son muy calificados y estan 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 interes, para
quedarse con una pequena fraccion de dinero, hasta sacar dinero de las
cuentas que no se han utilizado en anos o el "correo negro" .
• Espionaje comercias o
militar. El espionaje indica un intento serio y fundamentado por parte de
un competidor u otro pais para robar programas, secretos comerciales,
patentes, tecnologia, diseno de circuitos, planes de comercializacion, etc. A
menudo, este intento implica la cobertura de cables o el levantamiento de
antenas hacia la computadora con el fin de recoger su radiacion electromagnetica.
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
proteccion depende claramente de quien se piensa sea el enemigo.
Otro aspecto del problema de la
seguridad es la privacia: la proteccion de las personas respecto del mal uso
de la informacion en contra de uno mismo. Esto implica en forma casi
inmediata muchos aspectos morales y legales.
Para proteger un sistema, debemos
optar las necesarias medidas de seguridad en cuatro niveles distintos:
Si queremos poder garantizar la
seguridad del sistema operativo, es necesario garantizar la seguridad en los
primeros dos niveles. Cualquier debilidad en uno de los niveles altos de
seguridad (fisico o humano) podria puentear las medidas de seguridad que son
estrictamente de bajo nivel (del nivel del sistema operativo). Asi, la frase
que afirma que una cadena es tan fuerte como el mas debil de sus eslabones es
especialmente cierta cuando hablamos de seguridad de los sistemas. Para poder
mantener la seguridad, debemos contemplar todos estos aspectos.
Ademas, el sistema debe proporcionar
mecanismos de proteccion para permitir la implementacion de las
caracteristicas de seguridad. Sin la capacidad de autorizar a los usuarios y
procesos, de controlar su acceso y de registrar sus actividades, seria
imposible que un sistema operativo implementara medidas de seguridad o se
ejecutara de forma segura. Para soportar un esquema global de proteccion
hacen falta mecanismos de proteccion hardware. Por ejemplo, un sistema donde
la memoria no este protegida no puede nunca estar seguro.
|
6.6 Clasificaciones de la seguridad
La seguridad interna esta relacionada
a los controles incorporados al hardware y al Sistema Operativo para asegurar
los recursos del sistema.
Seguridad Externa
La seguridad externa consiste
en:
La seguridad fisica incluye:
En la seguridad fisica son
importantes los mecanismos de deteccion , algunos ejemplos son:
La proteccion contra desastres puede
ser costosa y frecuentemente no se analiza en detalle; depende en gran medida
de las consecuencias de la perdida.
La seguridad fisica trata
especialmente de impedir la entrada de intrusos:
Seguridad Operacional
Consiste en las diferentes politicas
y procedimientos implementados por la administracion de la instalacion
computacional.
La autorizacion determina que
acceso se permite y a quien.
La clasificacion divide el
problema en subproblemas:
Un aspecto critico es la seleccion
y asignacion de personal:
Para disenar medidas efectivas de
seguridad se debe primero:
|
6.7 Validación y amenazas al sistema
Identificar cada usuario que esta trabajando en el sistema
(usando los recursos).
1.- Que sean complejas y dificiles de adivinar.
2.- Cambiarlas de vez en cuando. 3.- Peligro de perdida del secreto.
Proteccion por Contraseña
Las clases de
elementos de autentificacion para establecer la identidad de una
persona son: Algo sobre la persona:
El usuario elige una palabra clave, la memoriza, la teclea para ser admitido en el sistema computarizado:
Elegir las contrasenas.
Nombre de un amigo, pariente, perro, gato, etc.
La contrasena no debe ser muy corta para no facilitar la probabilidad de acierto. Tampoco debe ser muy larga para que no se dificulte su memorizacion, ya que los usuarios la anotarian por miedo a no recordarla y ello incrementaria los riesgos de que trascienda. Contraseñas de un solo uso • Al final de cada sesion, se le pide al usuario que cambie la contrasena. • Si alguien “roba una contrasena”, el verdadero usuario se dara cuenta cuando vaya a identificarse de nuevo, pues el impostor habra cambiado la contrasena, con lo que el fallo de seguridad queda detectado.
Verificación de Amenazas
Es una
tecnica segun la cual los usuarios no pueden tener acceso directo a un
recurso : Solo lo tienen las rutinas del S. O. llamadas programas de vigilancia.
Los procesos son junto con el kernel , el unico medio de realizar un trabajo útil.
en una computadora. Por tanto, un objetivo comun de los
piratas informaticos consiste en escribir un programa que cree una brecha de
seguridad. De hecho, las mayorias de las brechas de seguridad no relacionadas
con programas tienen por objetivos crear una brecha que si este basada en un
programa. Por ejemplo, aunque resulta util iniciar una sesion en un sistema
sin autorizacion, normalmente es mucho mas util dejar un demonio de tipo puerta
trasera que proporcione informacion o que permita un facil acceso incluso
aunque se bloquee la brecha de seguridad original.
En esta
seccion, vamos a describir algunos metodos comunes mediante los cuales
los programas pueden provocar brechas de seguridad. Hay que resaltar que
existe una considerable variacion en lo que respecta a los convenios de
denominacion de los agujeros de seguridad, y que en este texto utilizamos los
terminos mas comunes o descriptivos. CABALLO DE TROYA Un programa indudablemente util e inocente que contiene codigos escondidos que permiten la modificacion no autorizada y la explotacion o destruccion de la informacion. Los programas caballo de Troya se distribuyen por lo general por Internet. Los juegos, freeware y protectores de pantalla son los medios comunes que utilizan los caballos de Troya. Se denomina troyano (o caballo de Troya , traduccion mas fiel del ingles Trojan horse aunque no tan utilizada) a un programa malicioso capaz de alojarse en computadoras y permitir el acceso a usuarios externos, a traves de una red local o de Internet, con el fin de recabar informacion o controlar remotamente a la maquina anfitriona. Un troyano no es de por si, un virus, aun cuando teoricamente pueda ser distribuido y funcionar como tal. La diferencia fundamental entre un troyano y un virus consiste en su finalidad. Para que un programa sea un "troyano" solo tiene que acceder y controlar la maquina anfitriona sin ser advertido, normalmente bajo una apariencia inocua. Al contrario que un virus, que es un huesped destructivo, el troyano no necesariamente provoca daños porque no es su objetivo. Suele ser un programa pequeno alojado dentro de una aplicacion, una imagen, un archivo de musica u otro elemento de apariencia inocente, que se instala en el sistema al ejecutar el archivo que lo contiene. Una vez instalado parece realizar una funcion util (aunque cierto tipo de troyanos permanecen ocultos y por tal motivo los antivirus o anti troyanos no los eliminan) pero internamente realiza otras tareas de las que el usuario no es consciente, de igual forma que el Caballo de Troya que los griegos regalaron a los troyanos. Habitualmente se utiliza para espiar, usando la tecnica para instalar un software de acceso remoto que permite monitorizar lo que el usuario legitimo de la computadora hace (en este caso el troyano es un spyware o programa espia) y, por ejemplo, capturar las pulsaciones del teclado con el fin de obtener contrasenas (cuando un troyano hace esto se le cataloga de keylogger) u otra informacion sensible. La mejor defensa contra los troyanos es no ejecutar nada de lo cual se desconozca el origen y mantener software antivirus actualizado y dotado de buena heuristica; es recomendable tambien instalar algun software anti troyano, de los cuales existen versiones gratis aunque muchas de ellas constituyen a su vez un troyano. Otra solucion bastante eficaz contra los troyanos es tener instalado un firewall. Otra manera de detectarlos es inspeccionando frecuentemente la lista de procesos activos en memoria en busca de elementos extranos, vigilar accesos a disco innecesarios, etc. Lo peor de todo es que ultimamente los troyanos estan siendo disenados de tal manera que es imposible poder detectarlos excepto por programas que a su vez contienen otro tipo de troyano, inclusive y aunque no confirmado, existen troyanos dentro de los programas para poder saber cual es el tipo de uso que se les y poder sacar mejores herramientas al mercado llamados tambien "troyanos sociales" Los troyanos estan actualmente ilegalizados, pero hay muchos crackers que lo utilizan. PUERTA TRASERA En la informatica, una puerta trasera (o en ingles backdoor ), es una secuencia especial dentro del codigo de programacion mediante el programador puede acceder o escapar de un programa en caso de emergencia o contingencia en algun problema. A su vez, estas puertas tambien pueden ser perjudiciales debido a que los crackers al descubrirlas pueden acceder a un sistema en forma ilegal y aprovecharse la falencia. “Cualquier medio capaz de ampliar el alcance del hombre es lo suficientemente poderoso como para derrocar su mundo. Conseguir que la magia de ese medio trabaje para los fines de uno, antes que en contra de ellos, es alcanzar el conocimiento.” Alan Kay. “Es extrana la ligereza con que los malvados creen que todo les saldra bien.” Victor Hugo. A pesar de que no se consideran propiamente como virus, representan un riesgo de seguridad importante, y usualmente son desconocidas la inmensa gama de problemas que estas puedan llegar a producir. Al hablar de estas nos referimos genericamente a una forma "no oficial" de acceso a un sistema o a un programa. Algunos programadores dejan puertas traseras a proposito, para poder entrar rapidamente en un sistema; en otras ocasiones existen debido a fallos o errores. Ni que decir tiene que una de las formas tipicas de actuacion de los piratas informaticos es localizar o introducir a los diversos sistemas una puerta trasera y entrar por ella. El termino es adaptacion directa del ingles backdoor que comunmente significa “puerta de atras”. Lo usual en estos programas los cuales no se reproducen solos como los virus, sino que nos son enviados con el fin de tener acceso a nuestros equipos muchas veces a traves del correo electronico, por lo que la mayoria de las veces no son faciles de detectar y por si solos no siempre causan danos ni efectos inmediatos por su sola presencia, siendo asi pueden llegar a permanecer activos mucho tiempo sin que nos percatemos de ello. Generalmente estos se hacen pasar por otros, es decir, se ocultan en otro programa que les sirve de caballo de Troya para que el usuario los instale por error. Lo peor que puede pasarle cuando esta en el messanger o en el ICQ no es que contraiga su PC un virus. Lo peor es que alguien instale un backdoor en su PC. Las puertas traseras son faciles de entender. Como todo en Internet se basa en la arquitectura cliente / servidor, solo se necesita instalar un programa servidor en una maquina para poder controlarla a distancia desde otro equipo, si se cuenta con el cliente adecuado, esta puede bien ser la computadora de un usuario descuidado o poco informado. Las puertas traseras (backdoors) son programas que permiten acceso practicamente ilimitado a un equipo de forma remota. El problema, para quien quiere usar este ataque, es que debe convencerlo a usted de que instale el servidor. Por eso, si aparece un desconocido ofreciendole algun programa maravilloso y tentador, no le crea de inmediato. Lo que estan probablemente a punto de darle es un troyano, un servidor que le proporcionara a algun intruso acceso total a su computadora. Con todo el riesgo que esto implica, hay una forma simple y totalmente segura de evitarlo: no acepte archivos ni mucho menos ejecute programas que le hayan mandado siendo estos sobre todo de procedencia dudosa. Los programas que se clasifican como “backdoors” o "puertas traseras" son utilerias de administracion remota de una red y permiten controlar las computadoras conectadas a esta. El hecho que se les clasifique como software malevolo en algunos casos, es que cuando corren, se instalan en el sistema sin necesidad de la intervencion del usuario y una vez instalados en la computadora, no se pueden visualizar estas aplicaciones en la lista de tareas en la mayoria de los casos. Consecuentemente un backdoor puede supervisar casi todo proceso en las computadoras afectadas, desinstalar programas, descargar virus en la PC remota, borrar informacion y muchas cosas mas. No es sencillo darle forma a un tema de esta complejidad en pocas lineas. Lo importante finalmente es comprender que si no se toman ciertas medidas minimas, la informacion sensible que se encuentre en cualquier equipo sobre la faz de la tierra, con el simple hecho de que tenga acceso a la red de redes (Internet) es suficiente para que pueda estar expuesto a ataques de diversa indole. Concluimos esto, recomendando ciertas medidas muy basicas para estar a salvo de las puertas traseras y el delicado riesgo para la seguridad que estas representan. A saber:
1.- Es recomendable asegurarnos de que cada cosa que
ejecutamos este bajo nuestro control. Una buena guia para ello es el sentido
comun (el menos comun de los sentidos).
2.- Procure no ejecutar programas de los que no sepamos su
procedencia, tanto en anexos de correo, ICQ, messanger y descargas de Internet
(ya sean via Web o FTP).
3.- La informacion nos protege. Es recomendable enterarse un
poco de las noticias de virus y programas daninos relacionados, visitando por
lo menos las paginas de las distintas empresas antivirus o suscribiendose a
algunos boletines.
4.- Es necesario instalar un antivirus y mantenerlo
actualizado. En la
actualidad se protege al usuario no solo contra virus, sino tambien contra gusanos, programas de puerta trasera, troyanos y algunos programas maliciosos.
5.- Es bueno tener presente que existen virus y troyanos que
pueden
aparentar ser amigables (una simple tarjeta de San Valentin), o que provienen de gente que conoces (como es el caso del gusano Sircam). Siendo asi, no confies en ningun programa ni en nada que recibas hasta no revisarlo con el Antivirus.
6.- Mantenga al dia todas las actualizaciones de seguridad de
Microsoft, para todas y cada una de las distintas aplicaciones
BOMBA LGICAEste tipo de delito forma parte de los sistemas informaticos que realizan ataques a la parte logica del ordenador. Se entiendo por bomba logica (en ingles denominado time bombs), aquel software, rutinas o modificaciones de programas que producen modificaciones, borrados de ficheros o alteraciones del sistema en un momento posterior a aquel en el que se introducen por su creador. Son parecidas al Caballo de Troya, aunque lo que se pretende es danar al sistema o datos, aunque se pueden utilizar para ordenar pagos, realizar transferencias de fondos, etc... Caracteristicas principales:
Un virus informatico es un programa que se copia automaticamente y que tiene por objeto alterar el normal funcionamiento de la computadora, sin el permiso o el conocimiento del usuario. Aunque popularmente se incluye al "malware" dentro de los virus, en el sentido estricto de esta ciencia los virus son programas que se replican y ejecutan por si mismos. Los virus, habitualmente, reemplazan archivos ejecutables por otros infectados con el codigo de este. Los virus pueden destruir, de manera intencionada, los datos almacenados en un ordenador, aunque tambien existen otros mas benignos, que solo se caracterizan por ser molestos. Los virus informaticos tienen, basicamente, la funcion de propagarse, replicandose, pero algunos contienen ademas una carga danina (payload) con distintos objetivos, desde una simple broma hasta realizar daños importantes en los sistemas, o bloquear las redes informaticas generando trafico inutil. El funcionamiento de un virus informatico es conceptualmente simple. Se ejecuta un programa que esta infectado, en la mayoria de las ocasiones, por desconocimiento del usuario. El codigo del virus queda residente (alojado) en la memoria RAM de la computadora, aun cuando el programa que lo contenia haya terminado de ejecutarse. El virus toma entonces el control de los servicios basicos del sistema operativo, infectando de, manera posterior, archivos ejecutables que sean llamados para su ejecucion. Finalmente se anade el codigo del virus al del programa infectado y se graba en disco, con lo cual el proceso de replicado se completa. Amenazas del Sistema y de la Red Las amenazas basadas en programas utilizan tipicamente un fallo en los mecanismos de proteccion de un sistema para atacar a los programas. Por contraste, las amenazas del sistema y de la red implican el abuso de los servicios y de las conexiones de red. En ocasiones, se utiliza un ataque del sistema y de la red para lanzar un ataque de programa, y viceversa. Las amenazas del sistema y de la red crean una situacion en la que se utilizan inapropiadamente los recursos del sistema operativo y los archivos del usuario. En esta seccion vamos a analizar algunos ejemplos de estas amenazas, incluyendo los gusanos, el escaneo de puertos y los ataques por denegacion de servicio. Es importante destacar que las mascaradas y los ataques por reproduccion tambien resultan comunes en las redes que interconectan los sistemas. De hecho, estos ataques son mas efectivos y mas dificiles de contrarrestar cuando estan implicados multiples sistemas. Por ejemplo, dentro de una computadora, el sistema operativo puede determinar, usualmente, el emisor y el receptor de un mensaje. Incluso si el emisor adopta el ID de alguna otra persona, puede que exista un registro de dicho cambio de ID. Cuando estan implicados multiples sistemas, especialmente sistemas que son controlados por los atacantes, realizar esa labor de traza resulta mucho mas dificil. La generalizacion de este concepto es que el compartir secretos (para demostrar la identidad y en forma de claves de cifrado) es una necesidad para la autenticacion del cifrado, y que esa comparticion resulta mas sencilla en aquellos entornos (por ejemplo con un unico sistema operativo) en los que existan metodos seguros de comparticion. Estos metodos incluyen la memoria compartida y los mecanismos de comunicacion interprocesos. GUSANOS Un gusano es un virus informatico o programa auto replicante que no altera los archivos sino que reside en la memoria y se duplica a si mismo. Los gusanos utilizan las partes automaticas de un sistema operativo que generalmente son invisibles al usuario. Es algo usual detectar la presencia de gusanos en un sistema cuando, debido a su incontrolada replicacion, los recursos del sistema se consumen hasta el punto de que las tareas ordinarias del mismo son excesivamente lentas o simplemente no pueden ejecutarse. Un gusano, al igual que un virus, esta disenado para copiarse de un equipo a otro, pero lo hace automaticamente. En primer lugar, toma el control de las caracteristicas del equipo que permiten transferir archivos o informacion. Una vez que un gusano este en su sistema, puede viajar solo. El gran peligro de los gusanos es su habilidad para replicarse en grandes numeros. Por ejemplo, un gusano podria enviar copias de si mismo a todos los usuarios de su libreta de direcciones de correo electronico, lo que provoca un efecto domino de intenso trafico de red que puede hacer mas lentas las redes empresariales e Internet en su totalidad. Cuando se lanzan nuevos gusanos, se propagan muy rapidamente. Bloquean las redes y posiblemente provocan esperas largas (a todos los usuarios) para ver las paginas Web en Internet. Gusano Subclase de virus. Por lo general, los gusanos se propagan sin la intervencion del usuario y distribuye copias completas (posiblemente modificadas) de si mismo por las redes. Un gusano puede consumir memoria o ancho de banda de red, lo que puede provocar que un equipo se bloquee. Debido a que los gusanos no tienen que viajar mediante un programa o archivo "host", tambien pueden crear un tunel en el sistema y permitir que otro usuario tome el control del equipo de forma remota. Entre los ejemplos recientes de gusanos se incluyen: Sasser y Blaster. ESCANEO DE PUERTOS El escaneo de puertos es una de las mas populares tecnicas utilizadas para descubrir y mapear servicios que estan escuchando en un puerto determinado.
Usando este metodo un atacante puede crear una lista de
las potenciales debilidades y vulnerabilidades en un puerto para dirigirse a
la explotacion del mismo y comprometer el host remoto Una de las primeras
etapas en la penetracion / auditoria de un host remoto es primeramente
componer una lista de los puertos abiertos utilizando una o mas de las
tecnicas descritas abajo. Una ves establecida, los resultados ayudaran
al atacante a identificar los servicios que estan corriendo en ese puerto
utilizando una lista de puertos que cumplen con el RFC (la funcion
/etc/services in UNIX, getservbyport() automaticamente hace esto) permitiendo
comprometer el host remoto en la etapa de descubrimiento inicial.
Las
tecnicas de escaneo de puertos se dividen en tres tipos especificos y
diferenciados: *.escaneo abierto *.escaneo medio abierto *.escaneo
oculto Cada una de esas tecnicas permite un ataque para localizar
puertos abiertos y cerrados en un servidor pero saber hacer el escaneo
correcto en un ambiente dado depende de la topologia de la red, IDS,
caracteristicas de logging del servidor remoto. Aunque un escaneo abierto
deja bitacoras grandes y es facilmente detectable produce los mejores
resultados en los puertos abiertos y cerrados. Alternativamente, utilizar un escaneo oculto permite evitar ciertos IDS y pasar las reglas del firewall pero el mecanismo de escaneo como packet flags utilizados para detectar estos puertos puede dejar muchos paquetes caidos sobre la red dando resultados positivos siendo estos falsos. Mas adelante se discutira esto en la seccion de escaneo FIN de este documento. Enfocandonos mas directamente en cada una de las tecnicas anteriores, estos metodos se pueden categorizar en tipos individuales de escaneo. Veamos un modelo basico de escaneo incluyendo un barrido de ping. DENEGACION DE SERVICIO En seguridad informatica, un ataque de denegacion de servicio , tambien llamado ataque DoS (de las siglas en ingles Denial of Service ), es un ataque a un sistema de ordenadores o red que causa que un servicio o recurso sea inaccesible a los usuarios legitimos. Normalmente provoca la perdida de la conectividad de la red por el consumo del ancho de banda de la red de la victima o sobrecarga de los recursos computacionales del sistema de la victima. Se genera mediante la saturacion de los puertos con flujo de informacion, haciendo que el servidor se sobrecargue y no pueda seguir prestando servicios, por eso se le dice "denegacion", pues hace que el servidor no de abasto a la cantidad de usuarios. Esta tecnica es usada por los llamados crackers para dejar fuera de servicio a servidores objetivo. El llamado DDoS (siglas en ingles de Distributed Denial of Service , denegacion de servicio distribuida) es una ampliacion del ataque DoS, se efectua con la instalacion de varios agentes remotos en muchas computadoras que pueden estar localizadas en diferentes puntos. El invasor consigue coordinar esos agentes para asi, de forma masiva, amplificar el volumen del flood o saturacion de informacion, pudiendo darse casos de un ataque de cientos o millares de computadoras dirigido a una maquina o red objetivo. Esta tecnica se ha revelado como una de las mas eficaces y sencillas a la hora de colapsar servidores, la tecnologia distribuida ha ido sofisticandose hasta el punto de otorgar poder de causar danos serios a personas con escaso conocimiento tecnico. En ocasiones, esta herramienta ha sido utilizada como un notable metodo para comprobar la capacidad de trafico que un ordenador puede soportar sin volverse inestable y perjudicar los servicios que desempena. Un administrador de redes puede asi conocer la capacidad real de cada maquina.
Metodos de ataquede
negación de servicios
Un ataque
de "Denegacion de servicio" previene el uso legitimo de los
usuarios al usar un servicio de red. El ataque se puede dar de muchas formas,
como por ejemplo: Inundacion SYN (SYN Floods) TCP SYN Scanning el protocolo TCP se basa en una conexión en tres pasos (Three Way Handshake). Pero, si el paso final no llega a establecerse, la conexión permanece en un estado denominado "semiabierto". El SYN Flood es el más famoso de los ataques del tipo Denial of Service, publicado por primera vez en la revista Under Phrack; y se basa en un "saludo" incompleto entre los dos hosts. El Cliente envía un paquete SYN pero no responde al paquete ACK ocasionando que la pila TCP/IP espere cierta cantidad de tiempo a que el Host hostil responda antes de cerrar la conexión. Si se crean muchas peticiones incompletas de conexión (no se responde a ninguna), el Servidor estará inactivo mucho tiempo esperando respuesta. . La denegación de servicios se da por que el sistema esta a la espera de que baje el umbral que generalmente es 1 minuto para aceptar mas conexiones, cada conexión generada por un SYN, tienen un temporizador de 1 minuto, cuando se excede el limite de tiempo o umbral, se libera la memoria que mantiene el estado de la conexión y la cuenta de la cola de servicios se disminuye en 1. SYN Flood aprovecha la mala implementación del protocolo TCP, funcionando de la siguiente manera: Se envía al destino, una serie de paquetes TCP con el bit SYN activado, (petición de conexión) desde una dirección IP Spoofeada. Esta última debe ser inexistente para que el destino no pueda completar el saludo con el cliente. Aquí radica el fallo de TCP: ICMP reporta que el cliente es inexistente, pero TCP ignora el mensaje y sigue intentando terminar el saludo con el cliente de forma continua. Cuando se realiza un Ping a una maquina, esta tiene que procesarlo. Y aunque se trate de un proceso sencillo, (no es mas que ver la dirección de origen y enviarle un paquete Reply), siempre consume recursos del sistema. Si no es un Ping, sino que son varios a la vez, la máquina se vuelve mas lenta... si lo que se recibe son miles de solicitudes, puede que el equipo deje de responder (Flood). Es obligatorio que la IP origen sea inexistente, ya que sino el objetivo, logrará responderle al cliente con un SYN/ACK, y como esa IP no pidió ninguna conexión, le va a responder al objetivo con un RST, y el ataque no tendrá efecto.El problema es que muchos sistemas operativos tienen un límite muy bajo en el número de conexiones "semiabiertas" que pueden manejar en un momento determinado (5 a 30). Si se supera ese límite, el servidor sencillamente dejará de responder a las nuevas peticiones de conexión que le vayan llegando. Las conexiones "semiabiertas" van caducando tras un tiempo, liberando "huecos" para nuevas conexiones, pero mientras el atacante mantenga el SYN Flood, la probabilidad de que una conexión recién liberada sea capturada por un nuevo SYN malicioso es muy alta. Esto ocasiona la lentitud en los demás servicios En la Figura se observa un escenario típico de un atque y se observa como la máquina atacante con la dirección IP 10.1.1.10/24 usa una dirección de broadcast 10.1.1.255 para perpetrar el ataque y para que las máquinas víctima le contesten las peticiones, no sin antes pasando por todas las direcciones IP de la red, haciendo más efectivo el ataque. De esta forma, todas las respuestas individuales se ven amplificadas y propagadas a todos los ordenadores pertenecientes a la red amplificándolas y propagándolas consiguiendo una alta efectividad en el ataque. Ataque LAND (LAND attack) Un ataque LAND se realiza al enviar un paquete TCP/SYN falsificado con la direccion del servidor objetivo como si fuera la direccion origen y la direccion destino a la vez. Esto causa que el servidor se responda a si mismo continuamente y al final falle. Este ataque, que está dirigido a aplicaciones vulnerables, bloquea los sistemas o los vuelve inestables. Los sistemas más modernos ya no son vulnerables a este tipo de ataque. Los sistemas más modernos ya no son vulnerables a este tipo de ataque. Inundacion ICMP (ICMP floods) Es una tecnica DoS que pretender agota el ancho de banda de la victima. Consiste en enviar de forma continuada un numero elevado de paquetes ICMP echo request (ping) de tamano considerable a la victima, de forma que esta ha de responder con paquetes ICMP echo reply (pong) lo que supone una sobrecarga tanto en la red como en el sistema de la victima. Dependiendo de la relacion entre capacidad de procesamiento de la victima y atacante, el grado de sobrecarga varia, es decir, si un atacante tiene una capacidad mucho mayor, la victima no puede manejar el trafico generado.
Modelos de
ataques
Existe una
variante denominada smurf que amplifica considerablemente los efectos de un
ataque ICMP. En el smurf el atacante dirige paquetes ICMP echo request a una
direccion IP de broadcast10. Existen tres partes en un ataque smurf: El atacante, el intermediario y la victima (comprobaremos que el intermediario tambien puede ser victima). Cuando el atacante genera el paquete ICMP echo request, este es dirigido a una direccion IP de broadcast, pero la direccion origen del paquete IP la cambia por la direccion de la victima (IP spoofing), de manera que todas las maquinas intermediarias (maquinas pertenecientes a la red donde se envio el paquete) responden con ICMP echo reply a la victima. Como se dijo anteriormente, los intermediarios tambien sufren los mismos problemas que las propias victimas. Inundacion UDP (UDP floods) Basicamente este ataque consiste en generar grandes cantidades de paquetes UDP contra la victima elegida. Debido a la naturaleza sin conexion del protocolo UDP, este tipo de ataques suele venir acompanado de IP spoofing6. Es usual dirigir este ataque contra maquinas que ejecutan el servicio echo8 de forma que se generan mensajes echo de un elevado tamano. |
6.8 Cifrado.
Existen muchas defensas frente a los ataques informaticos, que
abarcan toda la gama que va desde la metodologia a la tecnologia. La
herramienta de caracter mas general que esta a disposicion de los usuarios y
de los disenadores de sistemas es la criptografia. En esta seccion vamos a
explicar algunos detalles acerca de la criptografia y de su uso en el campo
de la seguridad informatica.
En una
computadora aislada, el sistema operativo puede determinar de manera fiable
quienes son el emisor y el receptor de todas las comunicaciones
interprocesos, ya que el sistema operativo controla todos los canales de
comunicaciones de la computadora. En una red de computadoras, la situacion es
bastante distinta. Una computadora conectada a la red recibe bits desde el
exterior, y no tiene ninguna forma inmediata y fiable de determinar que
maquina o aplicacion ha enviado esos bits. De forma similar, la propia
computadora envia bits hacia la red sin tener ninguna forma de determinar
quien puede llegar a recibirlos. Comunmente, se utilizan las direcciones de red para inferir los emisores y receptores potenciales de los mensajes que circulan por la red. Los paquetes de red llegan con una direccion de origen, como por ejemplo una direccion IP. Y cuando una computadora envia mensajes, indica quinen es el receptor pretendido del mismo especificando una direccion de destino. Sin embargo, para aquellas aplicaciones en que la seguridad tenga importancia, correriamos el riesgo de meternos en problemas si asumieramos que la direccion de origen o de destino de un paquete permite determinar con fiabilidad quien a enviado o recibido dicho paquete. Una computadora maliciosa podria enviar un mensaje con una direccion de origen falsificada y, asimismo, otras muchas computadoras distintas de la especificada por la direccion de destino podrian (y normalmente hacen) recibir un paquete. Por ejemplo, todos los encaminadores ubicados en la ruta hacia el destino recibiran tambien el paquete. ?como puede, entonces, decidir el sistema operativo si debe conceder una solicitud, cuando no puede confiar en el origen especificado en dicha solicitud? ?y como se supone que debe proporcionar proteccion para una solicitud o para un conjunto de datos, cuando no puede determinar quien recibira la respuesta o el contenido del mensaje que envie a traves de la red? Generalmente, se considera impracticable construir una red (de cualquier tamano) en la que se pueda “confiar” en este sentido en las direcciones de origen y destino de los paquetes. Por tanto, la unica alternativa es eliminar, de alguna manera, la necesidad de confiar en la red; este es el trabajo de la criptografia. Desde un punto de vista abstracto, la criptografia se utiliza para restringir los emisores y/o receptores potenciales de un mensaje. La criptografia moderna se basa en una serie de secretos, denominados clave , que se distribuyen selectivamente a las computadoras de una red y se utilizan para procesar mensajes. La criptografia permite al receptor de un mensaje verificar que el mensaje ha sido creado por alguna computadora que posee una cierta clave: esa clave es el origen del mensaje. De forma similar, un emisor puede codificar su mensaje de modo que solo una computadora que disponga de una cierta clave pueda decodificar el mensaje, de manera que esa clave se convierte en el destino . Sin embargo, a diferencia de las direcciones de red, las claves estan disenadas de modo que no sea computacionalmente factible calcularlas a partir de los mensajes que se hayan generado con ellas, ni a partir de ninguna otra informacion publica. Por tanto, las claves proporcionan un medio mucho mas fiable de restringir los emisores y receptores de los mensajes. Observe que la criptografia es un campo de estudio completo por derecho propio, con una gran complejidad; aqui, vamos a explorar unicamente los aspectos mas importantes de aquellas partes de la criptografia que se relacionan con los sistemas operativos. Sistema de privacidad criptografico En un sistema de privacidad criptografico, el remitente desea transmitir cierto mensaje no cifrado a un receptor legitimo, la transmision ocurre sobre un canal inseguro asume ser monitoreado o grabado en cinta por un intruso. El remitente pasa el texto a una unidad de encriptacion que transforma el texto a un texto cifrado o criptograma; el mismo no es entendible por el intruso. El mensaje es transmitido entonces, sobre un canal seguro. Al finalizar la recepcion el texto cifrado pasa a una unidad de descripcion que regenera el texto. Criptoanalisis Criptoanalisis es el proceso de intentar regenerar el mensaje desde el texto cifrado pero sin conocimiento de las claves de encriptacion. Esta es la tarea normal de los intrusos. Si el intruso o criptoanalista no puede determinar un mensaje desde el texto cifrado (sin la clave), entonces el sistema de criptografiado es seguro.
Metodos y tecnicas de
encriptacion
Cesar Esta tecnica consistia simplemente en sustituir una letra por la situada tres lugares mas alla en el alfabeto esto es la A se transformaba en D, la B en E y asi sucesivamente hasta que la Z se convertia en C. Gronsfeld Este metodo utiliza mas de un alfabeto cifrado para poner en clave el mensaje y que se cambia de uno a otro segun se pasa de una letra del texto en claro a otra. Es decir que deben tenerse un conjunto de alfabetos cifrados y una forma de hacer corresponder cada letra del texto original con uno de ellos. RSA En los sistemas tradicionales de cifrado debe comunicarse una clave entre el emisor y el receptor del mensaje, el problema aqui es encontrar un canal seguro para transmitir dicha clave. Este problema viene a resolverse en los sistemas de clave publica la clave de cifrado, pues un tiempo enormemente de ordenador es necesario para encontrar una transformacion de descifrado a partir de la de cifrado. DES DES fue desarrollado por IBM a mediados de los setenta. Aunque tiene un buen diseno, su tamano de clave de 56 bits es demasiado pequeno para los patrones de hoy. DES (Data Encryption Standard) es un mecanismo de encriptacion de datos de uso generalizado. Hay muchas implementaciones de hardware y software de DES. Este transforma la informacion de texto llano en datos encriptados llamados texto cifrado mediante el uso de un algoritmo especial y valor semilla llamado clave. Si el receptor conoce la clave, podra utilizarla para convertir el texto cifrado en los datos originales. Es un mecanismo de encriptado simetrico. Chaffing & Winnowing Esta tecnica propuesta por Donald Rivest. Es mas un intento de esquivar las restricciones a la criptografia en EE.UU. (y otros paises) que una propuesta razonable debido al tamano de los mensajes resultantes. El termino ingles “winnowing” se tomara como aventar es decir separar el grano de la paja y el termino “chaffing” por el castellano empajar (cubrir o rellenar con paja). La idea basica consiste en mezclar la informacion real (grano) con otra de relleno (paja) de modo que sea imposible separarlas excepto para el destinatario. SKIPJACK Este algoritmo fue descalificado por el gobierno de Estados Unidos. Algunos detalles sobre el algoritmo en si y sus aplicaciones en la practica a los chips Clipper y Capstone. Skipjack fue desarrollado por la NSA inicialmente para los chips Clipper y Capstone. Su diseno comenzo en 1985 y se completo su evaluacion en 1990. BIFIDO El metodo Bifido es un cifrado fraccionario. Es decir que cada letra viene representada por una o mas letras o simbolos, y donde se trabaja con estos simbolos mas que con las letras mismas. WLBYKYAAOTB Este metodo altera la frecuencia de los caracteres a diferencia de lo que ocurre por ejemplo con los cifrados monoalfabeticos. Admite algunas variaciones como por ejemplo dividir la lista en 3,4,..., n partes. Cifrado exponencial Es un sistema basado en la exponenciacion modular, debido Pohlig y Hellman (1978). Este metodo es resistente al criptoanalisis. Blowfish Este algoritmo realiza un cifrado simple en 16 ciclos, con un tamano de bloque de 64 bytes para un total de 448 bits. Aunque hay una fase compleja de la inicializacion. El cifrado de datos es muy eficiente en los microprocesadores grandes. Cifrado La gran desventaja de las llaves secretas es que requieren un canal seguro para ser distribuidas - Si una contrasena es enviada por un canal inseguro puede ser interceptada, y no habria manera de lograr que quien la intercepte descifre con ella los mensajes enviados, o evitar que modifique o envie mensajes falsificando su identidad. No siempre disponemos de un canal seguro. Lo que es mas, estrictamente hablando, los canales seguros simplemente no existen. Sea como sea que la informacion sea transmitida, siempre podra ser escuchada por un tercero. Si hace falta tener un canal seguro para intercambiar las contrasenas, la utilidad de las contrasenas se vuelve nula. La primera respuesta a estos problemas viene de Diffie y Hellman [ 5 ], siendo una de las implementaciones mas comunes la RSA (por las siglas de sus autores, Rivest, Shamir y Adelman). Ellos proponen un sistema en el cual haya dos funciones: E para cifrar y D para descifrar un mensaje en claro P, tal que D (E (P)) = P. [ 4 ] Las funciones E y D se traducen en un par unico de llaves para llevar a cabo una comunicacion encriptada: Una llave publica y una llave privada. La llave publica es distribuida a cuantas personas esten interesadas en ella, mientras que la llave privada se guarda celosamente. Cuando una persona quiere enviarme un mensaje cifrado, lo cifra utilizando mi llave publica, y solo yo podre descifrarlo utilizando mi llave privada. Estas funciones, ademas, tienen la caracteristica que si bien calcularlas en el sentido correcto es relativamente sencillo, pero intentar aplicarlas en el sentido inverso (encontrar una funcion inversa a E que nos permita encontrar P) es tan dificil que se vuelve altamente impractico. Otra importante caracteristica de los algoritmos derivados del trabajo de Diffie y Hellman es que las funciones aplicadas son simetricas: Se puede aplicar tanto D (E (P)) = P como E (D (P)) = P. Una fuerte desventaja de las llaves asimetricas es su complejidad matematica. Ademas de ser mucho mas complejas las funciones necesarias para realizar este tipo de cifrado, esto se refleja desde el tamano de la llave: Las mas cortas empleadas hoy en dia son de 512 bits, y no se consideran seguras de menos de 1024. No es poco comun, por otra parte, encontrar llaves de hasta 2048 bits. Sistemas de cifrado simetrico. Los sistemas de cifrado simetrico son aquellos que utilizan la misma clave para cifrar y descifrar un documento. El principal problema de seguridad reside en el intercambio de claves entre el emisor y el receptor ya que ambos deben usar la misma clave. Por lo tanto se tiene que buscar tambien un canal de comunicacion que sea seguro para el intercambio de la clave. Es importante que dicha clave sea muy dificil de adivinar ya que hoy en dia los ordenadores pueden adivinar claves muy rapidamente. Por ejemplo el algoritmo de cifrado DES usa una clave de 56 bits, lo que significa que hay 72 mil billones de claves posibles. Actualmente ya existen ordenadores especializados que son capaces de probar todas ellas en cuestion de horas. Hoy por hoy se estan utilizando ya claves de 128 bits que aumentan el "espectro" de claves posibles (2 elevado a 128) de forma que aunque se uniesen todos los ordenadores existentes en estos momentos no lo conseguirian en miles de millones de anos. Sistemas de cifrado asimetrico. Tambien son llamados sistemas de cifrado de clave publica. Este sistema de cifrado usa dos claves diferentes. Una es la clave publica y se puede enviar a cualquier persona y otra que se llama clave privada, que debe guardarse para que nadie tenga acceso a ella. Para enviar un mensaje, el remitente usa la clave publica del destinatario para cifrar el mensaje. Una vez que lo ha cifrado, solamente con la clave privada del destinatario se puede descifrar, ni siquiera el que ha cifrado el mensaje puede volver a descifrarlo. Por ello, se puede dar a conocer perfectamente la clave publica para que todo aquel que se quiera comunicar con el destinatario lo pueda hacer. Un sistema de cifrado de clave publica basado en la factorizacion de numeros primos se basa en que la clave publica contiene un numero compuesto de dos numeros primos muy grandes. Para cifrar un mensaje, el algoritmo de cifrado usa ese compuesto para cifrar el mensaje. Para descifrar el mensaje, el algoritmo de descifrado requiere conocer los factores primos, y la clave privada tiene uno de esos factores, con lo que puede facilmente descifrar el mensaje. Es facil, con los ordenadores de hoy en dia, multiplicar dos numeros grandes para conseguir un numero compuesto, pero es muy dificil la operacion inversa, Dado ese numero compuesto, factorizarlo para conocer cada uno de los dos numeros. Mientras que 128 bits se considera suficiente en las claves de cifrado simetrico, y dado que la tecnologia de hoy en dia se encuentra muy avanzada, se recomienda en este caso que la clave publica tenga un minimo de 1024 bits. Para un ataque de fuerza bruta, por ejemplo, sobre una clave publica de 512 bits, se debe factorizar un numero compuesto de hasta 155 cifras decimales. Autenticacion Autenticacion ( Griego : αυθεντικ?? = verdadero o genuino, de ' los authentes' = el autor) es el acto de establecimiento o confirmacion de algo (o alguien) como autentico, es decir que reclama hecho por o sobre la cosa son verdadero. La autenticacion de un objeto puede significar (pensar) la confirmacion de su procedencia, mientras que la autenticacion de una persona a menudo consiste en verificar su identidad. La autenticacion depende de uno o varios factores de autenticacion. En terminos de seguridad de redes de datos, se puede considerar uno de los tres pasos fundamentales (AAA). Cada uno de ellos es, de forma ordenada: Autenticacion En la seguridad de ordenador, la autenticacion es el proceso de intento de verificar la identidad digital del remitente de una comunicacion como una peticion para conectarse. El remitente siendo autenticado puede ser una persona que usa un ordenador, un ordenador por si mismo o un programa del ordenador. En un web de confianza, "autenticacion" es un modo de asegurar que los usuarios son quien ellos dicen que ellos son - que el usuario que intenta realizar funciones en un sistema es de hecho el usuario que tiene la autorizacion para hacer asi.
Mecanismo general de autenticacion
La mayor
parte de los sistemas informaticos y redes mantienen de uno u otro modo una
relacion de identidades personales (usuarios) asociadas normalmente con un
perfil de seguridad, roles y permisos. La autenticacion de usuarios permite a
estos sistemas asumir con una seguridad razonable que quien se esta
conectando es quien dice ser para que luego las acciones que se ejecuten en
el sistema puedan ser referidas luego a esa identidad y aplicar los
mecanismos de autorizacion y/o auditoria oportunos.El primer elemento necesario (y suficiente estrictamente hablando) por tanto para la autenticacion es la existencia de identidades biunivocamente identificadas con un identificador unico (valga la redundancia). Los identificadores de usuarios pueden tener muchas formas siendo la mas comun una sucesion de caracteres conocida comunmente como login . El proceso general de autenticacion consta de los siguientes pasos:
Distribucion
de claves
Lo ideal
seria que pudieramos distribuir nuestra clave entregandosela en persona a
nuestros corresponsales. Sin embargo, en la practica las claves se
distribuyen a menudo por correo electronico o algun otro medio de
comunicacion electronica. La distribucion por correo electronico es una buena
practica solo cuando tengamos unos pocos corresponsales, e incluso si
tuvieramos muchos corresponsales, podriamos usar un medio alternativo como
puede ser publicar nuestra clave publica en nuestra pagina en Internet. Sin embargo,
esto es inutil si las personas que necesitan nuestra clave publica no saben
donde encontrar nuestra pagina.Para solventar este problema existen los servidores de claves publicas, que recolectan y distribuyen las claves publicas. Cuando un servidor recibe una clave publica, bien la anade a la base de datos o bien la fusiona con una copia de la clave. Cuando alguien requiere al servidor una clave publica, este la busca en la base de datos, y si la encuentra, la envia a quien se la haya solicitado. Los servidores de claves tambien son utiles cuando hay muchas personas que firman las claves de otras con frecuencia. Sin un servidor de claves, cuando Arranca firma la clave de Javier, deberia enviar a esta una copia de la clave firmada por el, de manera que Javier pudiera anadir la clave firmada a su anillo de claves asi como distribuirla a todos sus corresponsales. Mediante este proceso Javier y Arancha sirven a la totalidad de la comunidad construyendo lazos en forma de anillos de confianza, o lo que es lo mismo, mejorando la seguridad de PGP. De todos modos esto es una molestia si se firman las claves con frecuencia. El uso de un servidor de claves facilita este proceso. Despues de firmar la clave de Javier, Arancha puede enviar la copia firmada por el al servidor de claves. El servidor de claves anade la firma de Arancha a la copia que ya posee de Javier. Las personas que esten interesadas en actualizar su copia de la clave de Javier, consultan al servidor por propia iniciativa para obtener la clave actualizada. Javier no necesita distribuir la clave, y puede obtener las firmas en su clave requiriendolas al servidor. Se pueden enviar una o mas claves usando la opcion de la linea de ordenes --send-keys . Esta opcion toma uno o mas especificadores de claves, y envia las claves especificadas al servidor de claves. El servidor al que se envian las claves es especifica con la opcion de la linea de ordenes --keyserver . Paralelamente, la opcion --recv-keys se usa para obtener claves desde un servidor de claves, pero la opcion --recv-keys requiere el uso de un identificador de claves para poder especificar la clave deseada. En el siguiente ejemplo Javier envia su clave publica al servidor de claves certserver.pgp.com , y a continuacion actualiza su copia de la clave de Arancha desde el mismo servidor. |
https://sites.google.com/site/materiasisoperativo/unidad-6-proteccion-y-seguridad/6-8-cifrado