F39 Seguridad y Protección de la Información
Trabajo Asignatura




Índice

    TEMA 1. INTRODUCCIÓN A LA SEGURIDAD INFORMÁTICA

    TEMA 2. FUNDAMENTOS DE CRIPTOGRAFÍA

    TEMA 3. SEGURIDAD EN REDES

    TEMA 4. AMENAZAS PROGRAMADAS. VIRUS

    TEMA 5. SEGURIDAD EN SISTEMAS OPERATIVOS
 
 



 
 

1.- INTRODUCCIÓN A LA SEGURIDAD INFORMÁTICA.

Definición de Conceptos

    Definición de seguridad informática: medidas para preservar la información. Al establecer la seguridad de la información nos encontramos con varios criterios o propiedades fundamentales a preservar, que son:
 

Propiedades a preservar Descripción
Confidenciabilidad         La información debe estar disponible para los usuarios autorizados a manejar la misma (control de acceso). En el secreto debe incluirse, no sólo el de los datos, sino también el del flujo de información (cifrado de la información).
Integridad de los datos          Permite asegurar que no se ha falseado la información.
Autenticidad          Asegura el origen y destino de la información (firma electrónica).
Disponibilidad          Garantiza la accesibilidad a los datos, un fallo en la disponibilidad de la información puede ser a causa de un ataque externo o de una mal configuración o implementación de la arquitectura del hardware y software.

    Conceptos de seguridad:

    La política de seguridad deberá establecer:     En la seguridad entran tres elementos:     Hay que identificar las vulnerabilidades y amenazas, y tomar las contramedidas.

    Clasificación de tipos de Vulnerabilidades por naturaleza:

    Clasificación de tipos de Amenazas por el efecto que causa:     Clasificación de tipos de Amenazas en función del origen:


Medidas de seguridad

    Hay muchas, pero se tienen que limitar en función del coste de la información.

    Las medidas de seguridad a establecer en un sistema de tratamiento de la información, son de cuatro tipos:


 

Principios fundamentales en la seguridad de la información

    Objetivo: obtener, aplicar y cumplir unas nociones básicas en el diseño de un sistema de seguridad.


 



 

2.- FUNDAMENTOS DE CRIPTOGRAFÍA

    La criptografía tiene como objetivo la protección -ocultamiento frente a observadores no autorizados- de la información, mediante un método matemático (interviene una llave o clave) se transforma la información (texto en claro) en otra información ininteligible (texto cifrado).
    Para descifrar el texto en clave es necesario la llave, el método matemático se conoce.

Criptosistema

    Criptosistema: es una quíntupla de 5 elementos donde:


    Todo criptosistema debe cumplir la siguiente condición:

 Dk(Ek(m)) = m

    Si tenemos un mensaje m, lo ciframos empleando la clave k y luego lo desciframos empleando la misma clave, obtenemos de nuevo el mensaje original m.

    C=Ek(m)   , k pertenece a K, Ek pertenece a E, m pertenece a M, m pertenece a C
    m=Dk(c)   , Dk pertenece a D

    Existen dos tipos fundamentales de criptosistemas:

           m=Dp(Ek(m))m=Dk(Ep(m)), por ejemplo, el algoritmo RSA cumple las dos propiedades.

           Dp'(Ek(m)) <> m, si p' es otra llave pública no se puede obtener el mensaje. Dado k no se puede sacar p y dado p no se puede sacar k (propiedad fundamental).
 

Cantidad de información

    La cantidad de información es una medida de la disminución de incertidumbre acerca de un suceso. Cuanto más probabilidad P(xi) de que ocurra un suceso xi, menos cantidad de información y viceversa.
    Un ejemplo: supongamos que tenemos una bolsa con nueve bolas negras y una blanca. ¿Cuánta información obtenemos si alguien nos dice que ha sacado una bola blanca de la bolsa?.Y ¿cuánta obtenemos si después saca otra y nos dice que es negra?.
   La respuesta a la primera pregunta es que nos aporta información, puesto que estábamos casi seguros de que la bola tenía que salir negra. Análogamente si hubiera
salido negra diríamos que ese suceso no nos suministra poca información. En cuanto a la segunda pregunta, claramente podemos contestar que no nos aporta ninguna información, ya que al no quedar bolas blancas sabíamos que iba a salir negra.
    Este concepto de información es cuantificable y se puede definir como:

-lg P(xi)
    Cuando P(xi)=1 lg1=0, no nos aporta información, por el contrario, cuando P(xi)=está entre 0 y 1 lg0...1=nº, es la cantidad de información que nos aporta.

Entropía

    Dada una variable aleatoria X={x1,x2,x3,...,xn} y sus probabilidades asociadas pi, i=1...n, se defina entropía de la variable X, y se representa por H(X), como el valor medio ponderado de la cantidad de información de los diversos estados:

H(X)=-S[P(xi)lg(P(xi))], donde xi pertenece a X, i=1...n
NOTA: S[] indica el sumatorio de una expresión matemática (entre corchetes).

    Dos propiedades de la entropía son:
 

    Ejemplo: código ASCII, cuando la probabilidad es la misma para todos los caracteres del código N=256=28=2lg2256

Entropía condicional

    Entropía condicionada de un suceso sobre otro (X, Y):

H(X/Y) = -Si[Sj[P(xi, yi)lg2P(xi/yi)]], donde Si[] es sumatorio desde i=1 hasta N y Sj es sumatorio desde j=1 hasta N

    Ley de entropías totales:


Cantidad de infomación entre dos variables

    La cantidad de información que nos aporta el hecho de conocer X al medir la incertidumbre sobre Y es igual a la disminución de entropía que este conocimiento conlleva.

I(X,Y) = H(Y) - H(Y/X)

Sus propiedades son las siguientes:

                i. I(X, Y ) = I(Y, X)
                ii. I(X, Y )>= conjunto vacío

Criptosistema seguro de Shannon

    Diremos que un criptosistema es seguro si la cantidad de información que nos aporta el hecho de conocer el mensaje cifrado c sobre la entropía del texto claro m vale cero. Es decir:

I(C, M) = 0

Redundancia

    Si una persona lee un mensaje en el que faltan algunas letras, normalmente puede reconstruirlo. Esto ocurre porque casi todos los símbolos de un mensaje en lenguaje natural contienen información que se puede extraer de los símbolos de alrededor, o en otras palabras, porque el lenguaje natural es redundante. Puesto que tenemos mecanismos para definir la cantidad de información que presenta un suceso, podemos intentar medir el exceso de información (redundancia) de un lenguaje.

    Índice de un leguaje:

Vk=Hk(M)/K, donde K en la longuitud de un mensaje en caracteres.

    El índice del Inglés es Vk = 1.3, necesita 1.3 bits por letra.

    Índice absoluto de un lenguaje:

R = lg2(N), donde N es el número de letras de un lenguaje.

    El índice del Español es R = 4.7 bits

    La redundancia de un lenguaje se define como la diferencia entre el índice e índice absoluto del lenguaje:

Redundancia = R - V

    El índice de redundancia es: I = R - V / R
 

Desinformación

    Desinformación de un criptosistema es la entropía condicionada del conjunto de los mensajes cifrados: H(M/C)

H(M)=H(M/C), el conocimiento de C no informa del conocimiento de M

Distancia de unicidad

    La distancia de unicidad es la cantidad de mensaje cifrado necesario para entender el mensaje. Es la longitud mínima de un sistema cifrado que aproxima el valor de H(K/C) a cero.

Confusión y Difusión

    Las dos técnicas básicas para ocultar la redundancia en un texto claro son la confusión y la difusión.

        Confusión: trata de confundir entre el texto cifrado y el claro, para ello se hace la sustitución.

        Difusión: diluir la redundancia del lenguaje repartiendo a lo largo del texto cifrado, para ello se hace la transposición (cambiar de sitio los caracteres).
 

Aritmética Modular

    Dados dos números a, b pertenecientes a N, la operación módulo es:

x mod y

Definiciones

    Concurrencia módulo n: a y b son concurrentes cuando hablamos de módulo n

a ~ b(mod n)
a = b + Ka k pertenece a los números enteros

    Para la suma se cumplen las propiedades: asociativa, conmutativa, elemento neutro y elemento simétrico.
    Para el producto se cumplen: asociativa, conmutativa y elemento neutro.
    La propiedad del producto con respecto la suma: distributiva.

Algoritmo de Euclides (básico)

    Permite calcular el máximo común divisor de dos números.
    Algoritmo:

m|a /\ m|b -» m|(a-kb) con k perteneciente a los enteros -» m|(a mod b)

    Dados dos números a y b:

  g0 = a
  g1 = b
  while (g1 != 0)
  {
      x = g0 % g1
      g0 = g1
      g1 = x
  }//Al final g0 tendrá el mínimo

Existencia de la Inversa

    a * b = 1 (mod n), dado a y n ¿existe a-1?

    Si el máximo común divisor (a, n) = 1 sí existe a-1.

Función de Euler

    CCR (conjunto reducido de resto): es el conjunto de números que son primos relativos con n (no comparte ningún divisor con n).

    Þ(n) -» número de elementos de CRR.

Þ(n) = P[piei-1 (pi-1)], donde P[] es el productorio desde i=1 hasta n
siendo n(estructura de cualquier número) = P[piei]
Ejemplo:
4 = 2*2 = 22
24 = 31*23
Þ(24) = 30*(3-1)*2(3-1)*(2-1) = 2*22 = 8

    Si in número es primo Þ(primo) = primo - 1

Teorema:

    Si m.c.d.(a, n) = 1 -» aÞ(n) = 1

    n = p*q, p y q son dos números primos

    m.c.d.(a, n) = 1, a(p-1)(q-1) = 1

    aÞ(n) = 1 = a * aÞ(n)-1-»inversa de a

     a-1= aÞ(n)-1
 

Algoritmo extendido de Euclides

e.e(n,a)
g0 = n, g1 = a
u0 = 1, n1 = 0
v0 = 0, v1 = 1

i = 1
While (gi != 0)
{
  c = gi-1/gi
  gi+1 = gi-1 % gi
  ui+1 = ui-1 - c * ui
  vi+1 = vi-1 - c vi
  i++
}

Algoritmo de exponenciación rápida

    b = 20*b0 + 21*b1 +...+ 2nbn

    ab = a20*b0 + 21*b1 +...+ 2nbn =  a20*b0*a21*b1*...

    a2i = (a2i-1)2
 

z = b
x = a
r = 1
While (z > 0)
{
  if (z % 1 == 1)
    r = r * x;//módulo n
  x = x * x;
  z = z / z;
}

Algoritmo de Lemann (para saber si un número grande es primo o no, tiene una probabilidad del 50%)

p «- nº
a aleatorio < p
b = a (p-1)/2 mod p
Si b mod p <> 1 y bmod p <> p-1
   p no es primo
Sino
   p tiene un 50% de ser primo
 

    Para generar un número primo de x bits, el bit 0 y el x-1 se ponen a 1 y los demás de un modo aleatorio.
    Con una tabla de números primos pequeños dividimos el número, si nos dice que puede ser primo aplicamos n (n = 10) veces el algoritmo de Lemann, por lo que la probabilidad de que p sea primo será de 1 contra 2n.

    Números primos fuertes: son números primos relacionados de una forma determinada:

p y q, son 2 números primos.

1.-  m.c.d. (p-1, q-1)            <<< (un número pequeño)
2.- p-1 -» p'     q-1 -» q'       >>> p' y q' tienen factores primos grandes
3.- p'-1 y q'-1                       >>> tienen factores primos grandes
4.- p'+1 y q'+1                     >>> tienen factores primos grandes
 
 

Métodos de cifrado clásicos

   1.-  Monoalfabéticos: un algoritmo que establece una correspondencia sobre otro alfabeto. El alfabeto alternativo es la clase de cifrado. Es un método de sustitución.

    Cifrado del Cesar: dado el alfabeto se fabrica un alfabeto alternativo que es desplazando 3 caracteres del alfabeto original.

    Ejemplo:
        c = k1*m+k2
        c = m + k

    Problema -» el cambio carácter a carácter hace que el texto de salida tenga una frecuencia similar al original.

   2.-  Cifrados Polialfabético: se utilizan varias tablas.

    Ejemplo:
        El caracter i-ésimo se desplaza con la tabla i-ésima: ci = mi + ki mod n

    Dispersión -» hacen permutaciones de un carácter en un texto.

    Ejemplo:
        Programa trans -e 23 = 4-5-8-1,21-22
 
 

Tipos de algoritmos simétricos


    Cifrado por Bloques

    DES: trabaja con bloques de 8 bytes y emplea llaves de 8 bytes (total 56 bits efectivos), de cada 9 bits hay 1 bit de paridad. Para poder descifrar 8 bytes se han de probar todas las claves. El conocimiento del mensaje cifrado no hace el conocimiento del descifrado de un bloque de la llave. Se puede implementar mediante puertas lógicas.
    problema -» cuando se da un patrón muy básico al hacer una transformación (DES) el patrón continua siendo el mismo.

    Modo ECB: se cogen 8 bytes y se codifican y así sucesivamente.

    Modo CBC: el mensaje se dividen en bloques (modo de cifrado encadenado, resuelve el problema de los patrones similares) se coge el bloque primero y se cifra con DES teniendo en cuenta un vector de inicialización.

    Caso general:

    Algoritmo de descifrado:

    El modo CBC es el modo por defecto para los algoritmos que trabajan por bloque.

    Registro de desplazamiento

 

Red de Feistel

    Dividen un bloque de longitud n en dos mitades, L y R. Se define entonces un cifrado de producto iterativo en el que la salida de cada ronda se usa como entrada para la siguiente .

   Esquema:

         (DES se aplica 16 veces)

    Cifrar
        Li = Ri-1
        Ri = (Li-1) xor (f(Ri-1, Ki))

    Descifrar
        Ri-1 = Li
        Li-1 = (Ri) xor (f(Li, Ki))
 

    Si dadas 2 llaves K1, K2 -» existe otra llave K que es la composición de las dos. EK = EK1(EK2)

    Función f del DES en la red Feistel

    S-Box, es una tabla de sustitución en la cual entran n bits y salen m bits.
    El DES utiliza 8 cajas de 6x4, entran 6 bits y salen 4.
 

Algoritmo DES



 
 

Cifrados asimétricos

    Son rápidos, fácil de implementar y difícil de trabajar en un sistema abierto.

Algoritmos de llave pública

    Hay 2 llaves, una pública y otra privada.
    Lo que se cifra con una llave se descifra con la otra y sólo con la otra.

    Algoritmo reversible: las llaves se pueden utilizar tanto para cifrar como para descifrar (algoritmo RSA).
 

    Esquema:


 

    Cualquier persona puede descifrar el mensaje con la llave pública, pero al cifrarse con la llave privada se consigue autenticidad.

    Para conseguir secreto y autenticidad 1º se firma (autenticidad) y 2º se cifra (mensaje secreto).
 

Algoritmo RSA

    RSA se basa en la dificultad para factorizar grandes números. Las claves pública y privada se calculan a partir de un número que se obtiene como producto de dos primos grandes. El atacante se enfrentaría, si quiere recuperar un texto claro a partir del criptograma y la llave pública, a un problema de factorización.

    Método:

    Seleccionamos p, q dos números primos y secretos.

    n = p * q -» público

    e (número primo relativo a p y q) = (p-1)*(q-1), los números más usuales suelen ser el 3 o 65535.

    Cuando dos números no comparten ningún factor, existe la inversa módulo n.

    Existe d, tal que e * d ~ 1 en mod (p-1)*(q-1)
    e*d = K*(p-1)*(q-1) + 1

    C = me en módulo n

    Cd en módulo n = (me)d = med = m(p-q)(q-1)+1 = m.m(q-1)(q-1)+1(función de Euler) = m.mÞ(n)

    Si m>p y m<q entonces
    {
          m y n són primos entre si -» mÞ(n) = 1
    }

    llave privada = (d, n)  cifrar -» c = me (mod n)
    llave pública = (e, n)   descifrar -» m = cd (mod n)

    La llave privada RSA se guarda en un fichero protegido con triple DES.

    Inconvenientes de cifrado

    Los algoritmos de llave pública són muy lentos frente a los de llave privada.

    Solución
        Se genera una llave s (llave de sesión) aleatoria (muy grande) y se mantiene en secreto.
        Se cifra con DES el mensaje m con la llave s.
        EDES S (m)

    Se envía la llave s cifrada en RSA con llave pública.
        EPB(S)
    Quién lo recibe:
         S = DKB(C2) -» m = DS(C1)

    Donde

        C1               C2
        EDES S(m),  EPB(S)
        ES(m)
 

Firma

    Sabemos que un mensaje m puede ser autentificado codificando con la llave privada Kp el resultado de aplicarle una función resume, EKp(r(m)). Esa información adicional  (que se denomina firma) puede ser generada por el poseedor de la clave privada Kp. Cualquiera que tenga la llave pública correspondiente podrá decodificar y vericar la firma.
 

   Inconvenientes de la firma


    Solución Función Resume (Hash), es una función no inyectiva (no tiene inversa) que su resultado es una cadena de tamaño fijo. Tiene la propiedad que al más mínimo cambio en la entrada produce un resultado muy distinto. Dado un resultado de función, es imposible saber de que texto viene.

    Para que un función no tenga inversa debe cumplir:

    En la práctica se utilizan funciones de 128 bits (md5: tiene 128 bits, sha1 tiene 256 bits).
    Si un texto es modificado, con funciones hash es facil detectarlo
 

    Hay una variante de estas funciones, son las MAC: hacen un resumen de un texto con una contraseña.
    Calculamos la función resume y se adjunta con el mensaje, posteriormente se cifra el resume.
 

T1
T2
m
EKA(H(m))

    La persona que no tiene programas para desencriptar, puede leer el texto.

    Comprobar la autenticidad

        Calculamos H(T1) = y
        Desciframos DPA(T2) = x

    Si x = y -» correcto
    x <> y -» mensaje alterado

    Problema
        Saber que la llave pública de A es de A.

        2 soluciones

            a) horizontal (lo utiliza el PGP): dar la clave en persona. Dar la clave entre intermediarios que son de fiar (el intermediario firma con su llave privada, la llave pública de otro, por lo que podemos saber su autenticidad).
            b) vertical: inclusión en un proceso, un tercero de confianza (que está en un plano superior, ejemplo un notario).

Certificados

    Certificado: un objeto que nos relaciona una llave pública con una descripción (paquete que contiene la llave y datos).

    Problema: modificación de datos.
    Solución: se debe firmar por el notario.

    En la práctica se usa el estándar X509

    Documentos PKCS  7 ,10 y 12 -» describe como se utiliza el RSA.

    Certificado X509

    Lenguaje ASN.1 para generar estructuras de datos.
 

X509
Subject (datos a los que hace referencia el certificado)
Issuer (emisor del certificado)
FI - FF (fecha inicio y fin)
Nº serie
Llave pública
Extensiones
Firma

    Campos del Suject.
 

Common Name
Country
Locality
State
Organization
Organization unit name
E-mail

Certificados autofirmados.

    Subject = Issuer, la llave pública firma la llave privada.
    En la práctica hay unos notarios admitidos comúnmente (empresa) que tienen su certificado autofirmado.
    Problema estratégico: ¿cómo se sabe que el certificado es de la empresa emisora?

Obtención de un certificado

    PKCS12 (es un contenedor personal): contiene todos los datos y las dos llaves protegidas por contraseña.
    PKCS10 (es un contenedor de petición): petición de certificado (muy parecido al certificado de autofirmado).
    En el PKCS10 se genera una llave privada y la autoridad certificadora manda un certificado request con la llave pública.

    PKCS10 y certificado tienen un formato binario llamado BER -» DER (subconjunto del BER).

Formato PEM???????????????:
------------------------Begin certificate request-----------------------------------
.....................binario........................
------------------------End certificate request------------------------------------

    Base 64 (ocupa un 33% más del original): formato de codificación de datos, representa la información binaria con un subconjunto del conjunto ASCII.
    De cada 2 bytes obtenemos 3 caracteres.

    Programa mimencode -u (transforma a base 64)
    Formato PEM:
------------------------Begin certificate request-----------------------------------
base 64
------------------------End certificate request------------------------------------

    En el caso de perder la clave privada o es robada, hay dos posibles soluciones:


 



 

3.- SEGURIDAD EN REDES.

    En general todas las redes de computadoras se construyen conceptualmente sobre diferentes capas de abstracción, que desarrollan tareas distintas y proporcionan un protocolo unificado a las capas superiores. La Criptografía podrá entonces ser empleada en diferentes niveles de abstracción. Por ejemplo, podemos cifrar un fichero antes de transmitirlo por la red, lo cual correspondería al nivel de abstracción mayor, o podemos enviarlo en claro, pero a través de un protocolo de bajo nivel que cifre cada uno de los paquetes en los que se va a subdividir el fichero en el momento de transmitirlo.

    Redes: es un sistema por el cual distintos ordenadores pueden comunicarse de forma directa.
    Redes más extendidas son TCP/IP.
    Estructura de TCP/IP
    Está formado por capas.

DNS: es una aplicación que se encarga de traducir los nombres en direcciones IP.
 
 
 

SSL

    SSL es un protocolo de comunicación (SSL v2, SSL v3, TLS (estándar para internet)) que da una capa de seguridad en comunicaciones on-line a bajo nivel.
 


    En el certificado para SSL:

    Common name: se pone el nombre del servidor.


 
 

    1º conectar con servidor
    2º servidor manda certificado
    3º el cliente comprobará el valor de la firma y si el common name es igual con el http://.......
    4º cliente y servidor intercambian protocolos criptográficos
    5º hay que comprobar que el certificado es correcto de verdad

    El cliente genera un desafío que suele ser una llave de sesión aleatoria, y la envía cifrada con la llave pública del servidor; el servidor, si el es el dueño del certificado podrá descifrarlo y con la llave de sesión se podrán comunicar cliente-servidor.

    En el caso de que el servidor quiera autentificar al cliente. El servidor pide un certificado al cliente, este lo envía. El servidor comprueba el certificado y le envía un reto.
 

Mail seguro

S-MIME (MIME seguro)

    En los correos hay un problema con los caracteres de control.
    Correo electrónico: es texto de 7 bits.
    1ª ampliación: texto de 8 bits.

    Solución:
    quoted-printable: coger los caracteres extraños y se codifican = XY.
    base 64: recodificación completa por cada 2 bytes -» 3 bytes.

    MIME: solución para enviar correo con texto y datos binarios combinados.
    Está compuesto por:

    cabecera
        MIME-Versión: 1.0
        Content-type: text/plain
        Content-transfer: encoding: quoted/printable
        From
        Subject:
        From :
        To Cc:

    cabecera mail
        From
        Subject:
        From:
        To:
        Cc:

        Texto
 

    A nivel técnico no existe el correo adjunto, se envían varios mensajes (mensajes múltiples partes).

Mensajes múltiples partes:

    cabecera
        MIME-Versión: 1.0
        Content-type: multipart /mixed;boundary (limitador) = "código único"
                                    alternative
                                    signed

        Cuerpo del mensaje:
        .
        .
        Texto de aviso MIME
        .
        .

        __ "código"
parte
        __"código"
parte
        __"código"__
 

    Cada parte del cuerpo del mail tiene el aspecto de MIME otra vez.

    parte:

 

    El MIME es recursivo y una de sus partes puede ser otro mensaje múltiple -» mixed.

Firma

    Content-type: multipart/signed;boundary = "código"

    __"código"
mensaje: cifrado con la llave privada del emisor.
    __"código"
    content-type:application/x_pkcs7_signature
    content-transfer-encoding = base 64

    __"código"__
 

Mensaje Cifrado

    Content_type: application/x_pkcs7_encrypted
    Content_transfer_enconding: base 64

    PKCS12: Se guarda (uso personal) los certificados, datos, autoridades...

    PKCS 7:

    En el pkcs 7, aparte de las firmas, también se envían los certificados, en ellos vienen las clave pública para descifrar las firmas y posteriormente un mensaje cifrado.

    Cadena de certificación: en un certificado se incluyen todos los certificados intermedios



    PKCS 7 admite varias firmas, datos de la firma encriptados con distintas llaves públicas.

    Si se envía el mismo mail cifrado para distintas personas:


 

    Un certificado se caracteriza por el número de serie y por quién lo firma.
 
 

Vulnerabilidades

    Cuando un sistema se conecta a una red, el perímetro de seguridad aumenta.

    Cada socket en escucha de un servidor es un punto de acceso al sistema.

    Problema snifing: pinchar la red para escuchar la transmisión de datos.


    Solución: encriptación.

Sistemas Criptográficos
 


    Problema suplantación: es la suplantación de la identidad dentro de una red. Puede haber suplantación de usuario, IP,...
    Usuario: se utiliza un usuario y password de otro.
    IP: un pc se asigna la IP de otro.
    Hijacking: el usuario con una comunicación abierta es expulsada y se utiliza.
    Protocolo smtp: emisor se puede cambiar. Solución: firma digital.

    Problema denegación de servicio: atacar al servidor para que deje de funcionar.
    Problema introducción directa en un sistema: una persona gana acceso directo sin suplantar a nadie. Se produce por error en aplicación.
 
 


    Lista de correo donde se publican fallos de programas:
           bugraq@segurityforcus.com
 

    Hay unos organismos llamas CERT que se encargan de avisar sobre problemas graves que pueden ocurrir.

        CERT en la uji -» REDIRIS: analiza el tráfico de la red en busca de cosas anómalas.
 
 


       Cuando queremos que el servidor responda a unos hosts y otros no. Se añade un software que limita el acceso dependiendo de la IP del host (wraper).
 

Firewall

    Es un conjunto de políticas y técnicas cuya misión es aislar al máximo un trozo de la red del resto (coger una red de una empresa y aislarla al máximo de internet).

    1º establecer políticas (quién pasará, quién no y en qué condiciones).


    Para implementar las políticas de entrada y salida se utiliza la técnica de filtrado de paquetes (establecer un punto de la red donde se unen una red con internet, se pueda hacer una selección de paquetes TCP/IP en base a la política).

    Un firewall se configura aplicando una serie de reglas:
        1ª regla política: aceptar, denegar
            Las reglas son de tipo entrada (paquetes que entran), salida(que salen) y tránsito (que se mueven).

        2º decir la IP de origen, de destino y máscara.

    Si se especifica se puede poner un protocolo (TCP, UDP,...)
    En el caso de protocolos asociados a un punto se debe especificar el número de puerto.
    Se puede especificar el tipo de paquete para el protocolo.
    Las reglas se aplican en orden (importante!).

    Ejemplo


 

    En A sólo queremos un servidor de web

    Firewall:
 


    Existen 3 generaciones de comandos de firewall con el linux.

           iptables -A input -s 0/0 -d ip/32 -p tcp --dport 80 -j accept

    Una forma de suavizar el firewall

        entrada: ...........
        .......
        sentencias anteriores
        puerto: 1024 en adelante -» permitir
        ACK activo
        ......
        .....

    Cuando un paquete es de respuesta a uno de petición el ACL está activo.
    Si se reciben paquetes de otras partes el ACK no está activo y ser rechazan.
 
 



 

4.- AMENAZAS PROGRAMADAS. VIRUS

Conceptos

    Caballo de troya: un programa que realiza ciertas acciones, el cual no estaba destinado para ello.
        Defensa: una estrategia en política de seguridad más efectiva.
 

    Virus: código cuya misión principal es sobrevivir a costa de los recursos de otros.


    Gusano: programa que sobrevive en la red, es como un virus.
 

Primero virus surgen con MS-DOS

    Etapas
            a)- Virus-MS-DOS / Mancintosh
            b)- Virus - Windows 9x
            c)- Virus - para aplicaciones (actuales)

MS-DOS

    Clasificación


 

Virus arranque

    Los virus se graban en el sector de arranque

    En el ordenador el virus se copia en la parte más alta.

    Para evitar que los sectores donde se copia el arranque original o alguna parte del virus sean sobrescritos, suelen marcarlos como defectuosos en la FAT.

 

Virus de programa

    Código que se pega al programa y al arrancar el programa se ejecuta el virus.
    Se contagian con el paso de programas, juegos...

    Programas
 


    Tipos

    Técnica de ocultamiento (Stealth): virus que se autocodifican mediante el operador XOR.
 
 
 



 

5.- SEGURIDAD EN SISTEMAS OPERATIVOS

    Un sistema operativo gestiona procesos, memoria, usuarios, ficheros y dispositivos.

    MS-DOS: S.O. que no proporciona protección para los procesos, memoria... Es un sistema monouruario y monotarea.

    Usuario: es un elemento de uso de la máquina. El usuario se identifica mediante un identificador:

usuario (nombre descriptivo (un nombre, lo utilizan los usuarios), identificado (número, lo utiliza la máquina))

    La autentificación se realiza mediante el uso de una password. Existen otras formas de identificación, se pueden basar en algo que el usuario es, sabe o tiene:


Password

    Una clave clave secreta que sólo debe saber el usuario, lo longitud mínima razonable es 6 caracteres.

    Hay sistemas que requieren de 2 passwords -» 2 personas.
    La password se guarda mediante una función unidireccional (Hash md5), se cifra pero no se puede descifrar.

    En UNIX
        0 --(DES)--» cifrado (el cero se cifra con DES con la password)

    UNIX clásico
        Los passwords se guardaban el fichero /etc/password, cifrados (es de acceso común):

username:password:ID:grupo:nombre y apellidos:home:shell

        password cifrada: 8 caracteres en binario, se expanden en caracteres obteniendo 11 caracteres + 2 adicionales (semilla, se juntan con la password para cifrar).

    UNIX moderno

        username:X:ID:grupo:nombre y apellidos:home:shell

        La password se guarda en el fichero /etc/shadow, además contiene información adicional como tiempo de caducidad (fichero de acceso restringido).
 

Gestión procesos y memoria

    Los procesos tienen el identificador del usuario que los lanza, permite proteger el proceso del resto.

    La memoria se divide por páginas. Las páginas son asignadas a los procesos y también guardan el ID. Si un proceso intenta acceder a una zona de memoria que no le corresponde, se anula dicho proceso.

    En UNIX, un proceso tiene 2 identificadores de usuario:


Ficheros y dispositivos

    Los dispositivos tienen un sistema de protección igual a los ficheros.

    Tabla de acceso a los ficheros:

    La tabla se puede tener en cuenta por filas o por columnas.

    Recorrer la tabla por columnas: para cada usuario se comprueba que ficheros/recursos puede acceder.
    Recorrer la tabla por filas: para cada recurso se comprueba que usuario puede acceder al fichero.

    Dado un fichero se almacena una lista (ACL) de los usuarios que pueden acceder y como.
    Lista ACL: 3536 owned| 4546 read| 678 execute| * delete

    En UNIX normal, se definen permisos propios, de grupo y para todos los usuarios.
 

    En un directorio: