martes, 18 de noviembre de 2014

6.8 Cifrado

El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido, de manera que solo pueda leerlo la persona que disponga de la clave de cifrado adecuada para descodificarlo. Por ejemplo, si realiza una compra en un sitio web, la información de la transacción (como su dirección, número de teléfono y número de tarjeta de crédito) suele cifrarse con el fin de mantenerla a salvo. Se usa el cifrado cuando desee un alto nivel de protección de la información.









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 situación 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 aplicación ha enviado esos bits. De forma similar, la propia computadora envía bits hacia la red sin tener ninguna forma de determinar quien puede llegar a recibirlos.




Criptoanálisis es el proceso de intentar regenerar el mensaje desde el texto cifrado pero sin conocimiento de las claves de encriptación. 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.


Métodos y técnicas de encriptación

Cesar
Esta técnica consistía simplemente en sustituir una letra por la situada tres lugares mas allá en el alfabeto esto es la A se transformaba en D, la B en E y así sucesivamente hasta que la Z se convertía en C.
Gronsfeld
Este método utiliza mas de un alfabeto cifrado para poner en clave el mensaje y que se cambia de uno a otro según 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.

DES
DES fue desarrollado por IBM a mediados de los setenta. Aunque tiene un buen diseño, su tamaño de clave de 56 bits es demasiado pequeño para los patrones de hoy.
DES (Data Encryption Standard) es un mecanismo de encriptación de datos de uso generalizado.
Chaffing & Winnowing
Esta técnica propuesta por Donald Rivest. Es mas un intento de esquivar las restricciones a la criptografia en EE.UU. (y otros países) que una propuesta razonable debido al tamaño de los mensajes resultantes.
La idea básica consiste en mezclar la información 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 diseño comenzó en 1985 y se completo su evaluación en 1990.
Bifido
El método Bífido es un cifrado fraccionario. Es decir que cada letra viene representada por una o mas letras o símbolos, y donde se trabaja con estos símbolos mas que con las letras mismas.
WLBYKYAAOTB
Este método 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 exponenciación modular, debido pohlig y hellman (1978). este método es resistente al criptoanalisis.
Blowfish
este algoritmo realiza un cifrado simple en 16 ciclos, con un tamaño de bloque de 64 bytes para un total de 448 bits. aunque hay una fase compleja de la inicialización. el cifrado de datos es muy eficiente en los microprocesadores grandes.




BitLocker 
Es una aplicación de cifrado de disco. La podemos encontrar en versiones de Windows Vista, Windows 7 y Windows Server 2008 en sus versiones más completas, esta aplicación esta diseñada para proteger los datos e impedir el acceso no autorizado a cualquier archivo almacenado en la unidad cifrada mediante una clave de 128 bits.


 



Mecanismo general de autenticación

La mayor parte de los sistemas informáticos y redes mantienen de uno u otro modo una relación de identidades personales (usuarios) asociadas normalmente con un perfil de seguridad, roles y permisos. La autenticación 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 autorización y/o auditoria oportunos.




El primer elemento necesario (y suficiente estrictamente hablando) por tanto para la autenticación es la existencia de identidades biunívocamente identificadas con un identificador único (valga la redundancia). Los identificadores de usuarios pueden tener muchas formas siendo la mas común una sucesión de caracteres conocida comúnmente como login .
El proceso general de autenticación consta de los siguientes pasos:
1. El usuario solicita acceso a un sistema.
2. El sistema solicita al usuario que se autentique.
3. El usuario aporta las credenciales que le identifican y permiten verificar la autenticidad de la identificación.

4. El sistema valida según sus reglas si las credenciales aportadas son suficientes para dar acceso al usuario o no.

6.7 Validación y amenazas al sistemas

VALIDACIÓN Y AMENAZAS AL SISTEMA

Deitel (1987) establece que la validación de datos es una de las áreas más importantes a tener en cuenta, especialmente en el desarrollo de sistemas conectados a redes como internet. Validar datos hace referencia a verificar, controlar o filtrar cada una de las entradas de datos que provienen desde el exterior del sistema.

La validación tiene que ver con:
• La verificación y la auditoría del sistema.
• La autentificación de los usuarios.
Los sistemas sofisticados de autentificación de usuarios resultan muy difíciles de evitar por parte de los intrusos.
Un problema existente es la posibilidad de que el sistema rechace a usuarios legítimos:
• Un sistema de reconocimiento de voz podría rechazar a un usuario legítimo resfriado.
• Un sistema de huellas digitales podría rechazar a un usuario legítimo que tenga una cortadura o una quemadura.

Deitel (1987) concluye que en definitiva, se debe identificar cada uno de los flujos de entrada, verificar que el tipo de dato sea el esperado y no otro, verificar que no haya códigos ocultos, etc.

Amenazas a la seguridad en el acceso al sistema:
· Intrusos.
· programas malignos.
Intrusos:
· Piratas o hackers: individuos que acceden al sistema sin autorización.
· Los sistemas presentan agujeros por donde los hackers consiguen colarse.
· Técnicas de intrusión:
- Averiguar contraseñas (más del 80% de las contraseñas son simples).
- Probar exhaustivamente.
- Descifrar archivo de contraseñas.
- Intervenir líneas.
- Usar caballos de Troya.

Técnicas de prevención de intrusos:
Establecer una buena estrategia de elección de contraseñas:
- Contraseñas generadas por ordenador (difícil memorización).
- Inspección activa (proceso periódico de averiguación).
- Inspección proactiva (decidir si es buena en su creación.

Técnicas de detección de intrusos:
Investigar actividades inusuales:
- Detección de anomalías estadísticas.
- Uso de registros de auditoría que recogen información del comportamiento de cada usuario.
- Detección basada en reglas.
- Conjunto de reglas empleadas para decidir si una actividad es inusual.

Tipos de amenazas:
Amenazas pasivas:
• Revelación del contenido del mensaje.
• Análisis del tráfico:
• En caso de que los mensajes vayan encriptados.
• Determinar las máquinas que se comunican y la frecuencia y longitud de los mensajes.
Amenazas activas:
• Alteración del flujo de mensajes.
• Privación del servicio:
• Impide el uso normal de los servicios de comunicaciones.
• Suplantación:
• Cuando una entidad finge ser otra diferente.



6.6 Clasificaciones de Seguridad

Interna
Externa
Seguridad Interna:
Todos los mecanismos dirigidos a asegurar el sistema informático, siendo el propio sistema el que controla dichos mecanismos, se engloban en lo que podemos denominar seguridad interna.
Seguridad del procesador:
Los mecanismos de protección del procesador son varios:
- Estados protegidos (Kernel) o no protegido (Usuario).

- Reloj hardware para evitar el bloqueo del procesador.

Seguridad Externa
La seguridad externa consiste en:
Seguridad física.

Seguridad operacional.


La seguridad física incluye:
 Protección contra desastres (como inundaciones, incendios).
 Protección contra intrusos.
 Mecanismos de detección:
                  (Ejemplos)
     -Detectores de humo.
     -Sensores de calor.
     -Detecciones de movimiento.
La protección contra desastres puede ser muy costosa y frecuentemente no se analiza en detalle; depende en gran medida en las consecuencias de las pérdidas
 


Objetivos de la seguridad Física

La seguridad física trata especialmente de impedir la entrada de intrusos:
Se utiliza sistemas de identificación física
 Tarjetas de identificación.
 Sistemas de huellas digitales.
 Identificación por medio de la voz.


Seguridad operacional.
Consiste en las diferentes políticas y procedimientos implementados por la administración de la instalación computacional.
-La autorización determina que acceso se permite y a quien.
-La clasificación divide el problema en subproblemas:
 Los datos del sistema y los usuarios se dividen en clases:
A las clases se le conceden diferentes derechos de acceso.

Clasificación del Departamento de Defensa (DoD) de los Estados Unidos
Esta clasificación especifica cuatro niveles de seguridad: A, B, C y D.








6.5 Concepto 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 relacionados a la garantía de que los archivos no sean leídos o modificados por personal no autorizado por un lado, y los sistemas específicos del sistema operativo utilizados para proporcionar la seguridad, por el otro.

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 naturales: 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.
                                       

Un problema mas 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 mas crueles: Desean hacer cambios no autorizados a los datos.
Algunas de las categorías comunes son:
Personas husmeando. Algunos estudiantes, programadores de sistemas, operadores y demás personal técnico consideran como un reto personal romper la seguridad del sistema de computo 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 anos 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. 

 






6.4 Proteccion basada en el lenguaje

La especificación de protección en un lenguaje de programación permite la descripción de alto nivel de políticas para la asignación y uso de recursos.
La implementación del lenguaje puede proveer software para hacer cumplir la protección cuando no se pueda validar si el hardware está soportado.
Interpretar las especificaciones de protección para generar llamadas en cualquier sistema de protección provisto por el hardware y el SO.
Protección en java 2
-La protección la maneja la máquina virtual (JVM)
La JVM asigna un dominio de protección a una clase cuando la carga.
El dominio de protección indica qué operaciones puede (y no puede) realizar la clase.

Si se invoca un método de biblioteca y éste realiza una operación privilegiada, se examina el stack para asegurar que la biblioteca pueda realizar la operación




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.
 


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.3 Implantacion de matrices de acceso

El modelo de protección del sistema se puede ver en forma abstracta como una matriz, la matriz de acceso.
Una matriz de acceso es una representación abstracta del concepto de dominio de protección.
Los elementos básicos 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 aplicación consigue acceder en realidad a un objeto por medio de un proceso que representa al usuario o a la aplicación.
•  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 están Leer, Escribir y Ejecutar.

Los derechos de acceso definen que acceso tienen varios sujetos sobre varios objetos.
Los sujetos acceden a los objetos.
Los objetos son entidades que contienen información.
Los objetos pueden ser:
Concretos:
Ej.: discos, cintas, procesadores, almacenamiento, etc.
Abstractos:

Ej.: estructuras de datos, de procesos, etc.

Los objetos están protegidos contra los sujetos.
Las autorizaciones a un sistema se conceden a los sujetos.
Los sujetos pueden ser varios tipos de entidades:
Ej.: usuarios, procesos, programas, otras entidades, etc.
Los derechos de acceso más comunes son:
Acceso de lectura.
Acceso de escritura.
Acceso de ejecución.
Una forma de implementación es mediante una matriz de control de acceso con:
Filas para los sujetos.
Columnas para los objetos.
Celdas de la matriz para los derechos de acceso que un usuario tiene a un objeto.



Una matriz de control de acceso debe ser muy celosamente protegida por el S. O.
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.
Un dominio es un conjunto de parejas (objeto, derechos):
Cada pareja determina:
Un objeto.
Un subconjunto de las operaciones que se pueden llevar a cabo en el.
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 protección:
Existe una colección de objetos a los que puede tener acceso.
Cada objeto tiene cierto conjunto de derechos.

Los procesos pueden alternar entre los dominios durante la ejecución.
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 :
Los renglones son los dominios.
Las columnas son los objetos.
Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese dominio, por ej.: leer, escribir, ejecutar.





Representación de matriz de acceso




Ejemplo de una matriz de acceso