TEMA 1: La problemática de la Seguridad Informática
TEMA 2: Fundamentos de la "Criptografia"
TEMA 5: Seguridad en los Sistemas Operativos
Seguridad Informática: Conjunto de medidas de cualquier tipo que intente preservar ciertas propiedades del sistema informático.
Propiedades:
ALGUNOS CONCEPTOS:
Auditoria: Consiste en revisar todos los procesos relacionados con la seguridad que se han realizado.
Política de Seguridad:
Declaración de intenciones organizativas de alto nivel que van a mantener la seguridad de un sector informático. Acaba reflejándose en un documento escrito. Toda la política de seguridad debe ir guiada por el SENTIDO COMUN
Para realizar una auditoria de seguridad tenemos que evaluar:
a) el valor de la información
b) los riesgos
c) el coste de intentar saltar las medidas de seguridad; el
asaltante no gastara mas dinero para romperlas que el valor de la
información a robar
Y en cuanto a estos costes tendremos que tener en cuenta que:
Vulnerabilidad, Amenazas y Contramedidas:
Vulnerabilidad: Es el punto en el que el sistema puede ser atacado(Debilidad)
Amenaza: Es cualquier peligro exterior que amenace al sistema,
como por ejemplo terremotos, personas, programas,...
Contramedida: Son las técnicas de protección especifica
contra las amenazas
Tipos de vulnerabilidad
Amenazas
Se pueden clasificar:
1.- Por el efecto que causan:
Contramedidas
Tenemos que tomar medidas de seguridad ante las Amenazas y Vulnerabilidades. Así que ahora podremos ver 4 tipos de medidas formando un anillo de protección, como son:
Criptografia: Mediante un método matemático, la información (texto en clave) se transforma en otra información (texto cifrado) que no podremos descifrar, en el que interviene una llave. De manera que para descifrar la información original necesitaremos esa llave (SOLO CON ELLA LOGRAREMOS DESCIFRAR LA INFORMACION).
Criptosistema: Conjunto de 5 elementos:
Clases de Criptosistemas:
TEORIA DE LA INFORMACION
Cantidad de información: Cuanto más probabilidad haya de que se cumple un proceso, menos información obtenemos.
- log P(xi): Probabilidad absoluta de lo que va a suceder es igual a cero.
La P(x=0) y sucede entonces la probabilidad es infinita.
Entropía: Dada una variable aleatoria X={x1, x2,... xn} y sus probabilidades asociadas P(x i), xi=1,..., n, se define 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:
Entropía condicionada de un suceso sobre
otro:
Cuando existe algún tipo de dependencia entre una variable aleatoria X y otra Y, proporciona información.
Se define entropía de la variable X condicionada por y como el valor medio de información acerca de X conocida Y.
H(X/Y)= -å ( å
(P(Xi,Yj)lg2 P(Xi/Yj) ))
Ley de Entropía Totales:
H(X,Y) = H(X) + H(Y/X)
H(X/Y) <= H(X) (solo será igual si son sucesos independientes)
| (X,Y) = H(Y) – H(Y/X)
| (X,Y) = | (YX)
|(X,Y) >= 0
Criptosistema seguro de Shanon:
También llamado Criptosistema ideal. El conocimiento del conjunto C no nos aporta información sobre el conjunto M.
| (C,M) = 0
Para que el criptosistema sea seguro se debe cumplir que el numero de elementos del conjunto(cardinal), del conjunto de llaves sea como mínimo igual al cardinal del conjunto de mensajes.
Algunas formulas:
Principios básicos de la Criptologia:
Congruencia modulo n
Considerando un entero positivo n y dados dos enteros a y b, se dice que a es congruente con b modulo n si, y solo si,
a = b + Kn para algún entero K.
Algoritmo de Euclides
Permite calcular el Máximo Común Divisor(MCD) de dos números.
Si m|a (m divida a a) y m|b ? m|(a mod b)? m| (b mod c)
g0 = a;
g1 = b; While (g1 != 0 ) { x = g0 % g1; g0 = g1 ; g1 = x; } |
Inversa:
Cuando MCD(a,n) = 1, entonces a tiene inversa mod n.
Conjunto de Residuos CD={1,2,..., n-1}
Conjunto Reducido de Residuos de modulo n a todos los números primos entre si. Para n=12, seria CRR={1,5,7,11}
El cardinal de CRR se denomina función de Euler: phi(n)
Phi(n)= numero de elementos del CRR
Se cumple que :
phi(n) = Pi=1 (piei-1(pi-1)), siendo
n = Pi=1 (pie)
4 = 2*2 = 22
24 = 31 * 23
5 = 51
24 = 3 * 23
phi(n) = 30(3-1)*2(3-1)(2-1) = 2* 22 = 8
números que no comparten con 24 ningún divisor
phi(primo) = primo – 1
Teorema si MCD(a,n) = 1 à aphi(n) = 1
N = pq
MCD(a,n) = 1
a(p-1)(q-1) = 1
aphi(n) = 1 = a*aphi(n)-1 àa-I
= a phi(n) - 1
Algoritmo de EULER. AEE
e.e.(n,a)
go = n ; g1 = a
n0 = 1 ; u1 = 0 r0 = 0 ; v1 = 1 i=1 while ( g i != 0 ) { c = gi-1/gi gi+1 = gi-1 % gi u i+1 = u i-1 – C*u i v i+1 = v i-1 – C*v i i ++ } |
numero de bits de un numero = log 2 numero |
PROBLEMAS COMPUTACIONALES:
Exponenciacion Rapida: ab
z = b;
x = a; r = 1; while ( z > 0) { if (z%1 == 1) r = r*x; x = x*x ; z = z/2; } |
Algoritmo de Lehmann: (Probabilidad del 50%)
Es uno de los métodos probabilisticos más sencillos para determinar si un numero p es primo. El algoritmo es el siguiente:
Generación de primos muy grandes:
Para generar un numero primo de n bits seguiremos el siguiente proceso:
Paso1: Generamos un numero primo aleatorio del tamaño
que queramos poniendo a 1 su bit más significativo y a 1 también
su bit menos significativo
Paso2: Dividiremos el numero resultante por una tabla de números
primos calculados anteriormente
Paso3: Aplicamos 10 o 20 veces el test de Lehmann
Paso4: Si después de este test vemos que el numero no
es primo, incrementaremos el numero en 2 unidades y repetiremos el Paso2
Hay otros números que se llaman primos fuertes que son los primos relacionados de la siguiente forma:
CRIPTOGRAFIA CLASICA
Métodos de Cifrado básicos:
C = m + K , donde
K=3 en el caso Cesar
Mensaje : P L A N T A A T O M I C A
Palabra clave repetida : S O L S O L S O L S O L S
Mensaje Cifrado:
I Z L F I L S I Z E W N S
Mensaje : m1 m2 m3 m4 m5 m6 m7 m8 m9
Mensaje cifrado: m2 m1 m3 m5 m4 m6 m8 m7 m9
El periodo es p=3, y la permutación aplicada es la i = 1 2 3
f(i) = 2 1 3
Resultando el mensaje cifrado el indicado.
CRIPTOGRAFIA ACTUAL:
Criptografia de Clave Privada
DES (Data Encription Standard)
Este algoritmo trabaja con bloques de 8 bytes (coge 8 bytes y los cifra). Para poder descifrar 8 bytes, tiene que probar todas las claves. Cumple que el conocimiento del texto cifrado no nos aporta nada sobre él. Se puede implementar mediante puertas lógicas. El DES, es el algoritmo de cifrado más extendido hoy en dia, y se muestra en la figura siguiente
Existen una serie de claves que son consideradas débiles y por ello se debe de evitar su utilización.
Pero, actualmente el DES con clave de 56 bits es inseguro frente a ataques
de fuerza bruta. En todos sus años de existencia no se le han encontrado
debilidades en cuanto a su diseño por lo que se han ideado formas
de alargar la clave, haciéndolo por tanto resistente a ataques por
fuerza bruta. En concreto el Triple-DES que utiliza una clave de
168 bits fraccionada en tres claves independientes de 56 bits que se utilizan,
sucesivamente, para cifrar la misma información.
REDES DE FREISTEL
La red de Freistel es una estructura de cifrado empleada en muchos algoritmos. Presenta la interesante característica de ser reversible, es decir, de poder descifrar lo cifrado utilizando la misma estructura con tan solo invertir el orden de las claves k. Ejemplo de una Red de Freistel:
Criptografia de Clave Publica
Los criptosistemas de clave publica se caracterizan por utilizar dos claves para cada participante, una sirve en general para la operación de cifrado y es publica, mientras que la otra clave, la de descifrado, la clave privada es secreta y es la única que puede recuperar la información cifrada.
Formalmente, si A envía un mensaje M firmado a B la firma electrónica
de A debe satisfacer los siguientes requisitos:
a) B debe ser capaz de validar la firma de A en M
b) Será imposible para cualquiera, incluso B, falsificar la
firma de A
c) En el caso que A niegue haber firmado un cierto mensaje recibido
por B, debe ser posible resolver la disputa por un juez o un tercero
No solamente pues, la firma electrónica proporciona la autenticidad
del remitente, sino que por b) también garantiza la autenticidad
de los datos
Las dos grandes aplicaciones de la Criptografia Publica son:
1.- La protección de la Información:
2.- Autenticación
1.-Protección de la Información:
La transmisión de mensajes a través de un canal inseguro de descifrado funciona de la siguiente forma: Si A quiere transmitir un mensaje cifrado a B, A necesitara la clave publica de B (PB). A cifra con PB el mensaje y lo transmite a B. Finalmente B descifra el mensaje con su clave privada KB
Aplicaciones Criptograficas en comunicaciones:
Suponemos un emisor A que quiere enviar un mensaje a lo receptores B y C
Cifrado del mensaje:
Cifrado y Firmado del mensaje:
Este caso es una combinación de las dos anteriores. Con objeto
de no dar ninguna información al posible intruso, firmaremos primero
el mensaje y después cifraremos el conjunto. Tanto para firmar como
para cifrar utilizaremos las técnicas anteriores
Inconvenientes Técnicos:
Los algoritmos de llave publica es mas lento que el de llave privada (NO es fiable)
FUNCIONES HASH:
Es una función no inyectiva(no tiene inversa) que dado un mensaje cualquiera, el resultado de aplicarle la función es una cadena de longitud fija.
Objetivo: evitar la falsificación
Propiedades:
1.- que el mensaje que viene de A, y
2.- que NO me han alterado el mensaje al hacer la comprobación
del resumen
Pero seguimos teniendo un problema: ¿Cómo sabemos si la
llave publica de A es verdaderamente de A y no de otro? Para ello tenemos
dos soluciones que las veremos en el apartado siguiente de Autenticación,
que
son las soluciones horizontales y las soluciones verticales.
2.- Autenticación:
La firma electrónica o digital es la propiedad privativa de un individuo o proceso que se utiliza para firmar mensajes. De forma que la información de la firma que se añade al mensaje garantiza la autenticidad del remitente, al igual que lo logra la firma escrita por el hombre.
Para asegurarnos de que una clave publica es verdaderamente de quien dice ser el propietario, tenemos 2 soluciones:
1.-Horizontales:
Algoritmo RSA
Es uno de los algoritmos más sencillos de implementar y pese
a ello es unas 1000 veces mas lento que el DES. Una clave RSA de 512 bits
viene a ofrecer la misma seguridad que una clave DES de 56 bits. A partir
de 786 bits de clave RSA ya se comienza a considerar seguro, aunque hoy
en dia ya comienzan a ser típicas claves de 1024 o 2048 bis
PROTOCOLOS CRIPTOGRAFICOS Y ESTANDARES
Modos de Cifrados por Bloques
Modo ECB
En modo ECB el texto en claro es dividido en bloques de 64bits, que se cifran uno a uno y por separado usando el DES. La concatenación de los bloques cifrados da lugar al texto cifrado.
Este modo tiene el problema de que pueden eliminarse porciones del texto cifrado sin que se note, esto es, puede ocurrir que si se conocen las características y posición de cierta información en el texto en claro, esta puede eliminarse del texto cifrado sin impedir un correcto descifrado del mismo
Por otro lado, este modo de funcionamiento tiene la ventaja de que funciona
bien en canales con ruido. Un fallo en la transmisión tan solo afecta
a un bloque de 64bits, no al mensaje completo. Este modelo suele utilizarse
para cifrado de claves
Modo CBC
En sete modo, antes de cifrar cada bloque de 64bits, se le aplica una XOR sobre el bloque cifrado anterior. El primer bloque se combina con un valor conocido. De este modo, se produce un encadenamiento entre los distintos bloques y el resultado de cifrar cada uno de ellos depende de todos los anteriores.
Debido a esta ultima característica, el ultimo bloque del texto cifrado puede actuar como firma digital o checksum del resto, permitiendo certificar que no ha sido alterado
En este modo de funcionamiento, un error en el texto cifrado tan solo
afecta al descifrado de dos bloques y suele utilizarse para cifrar y autentificar
documentos
Certificado X509
Lenguaje ASN 1, para definir "cajitas" ( RECORDS, STRUCTS...). Estas cajitas en su interior contienen:
Los certificados de las Autoridades Certificadoras(CA) los pueden firmar
otras CA, o pueden estar firmados por si misma(Autofirmado). Por lo tanto
cualquier CA podrá certificar a personas, entidades u otras CA,
indistintamente.
¿Cómo se obtiene un Certificado?
Para obtener un certificado, la Autoridad Certificadora(CA) tiene que asegurarse de forma fiable de que quien le pide el certificado sea la misma persona o entidad que lo recibe. Y para instalar un certificado, debemos asegurarnos de que podemos confiar tanto en la CA como del propietario del mismo. Para obtener un certificado debemos seguir los siguientes pasos:
Si teníamos:
HTTP |
TCP |
IP |
Le añadimos 1capa mas quedando de la siguiente forma:
HTTP |
SSL |
TCP |
IP |
Su objetivo principal: La autenticación del servidor y el cifrado de datos
Un objetivo secundario: La autenticación del cliente
Las autoridades certifican que la empresa es la propietaria de la URL y emiten 1 certificado a propósito, para ser usado con el SSL
En el "Common Name" del certificado se pone el nombre del servidor (de
la pagina WEB.
Como el servidor puede autenticar al cliente
Cuando el servidor quiere autenticar a un cliente, seguiremos un proceso que consiste en 2fases:
Una red es un sistema con el cual, distintos ordenadores pueden comunicarse de forma directa. Las mas extendidas son TCP/IP y funcionan con un modelo de capas. Las capas del modelo TCP/IP son:
|
|
|
|
|
|
|
Para poder intercambiar información necesitamos las IP´s
iniciales y las de destino de cada ordenador: ( IP0, P0
)----( IPd, Pd ).
Aplicaciones: Esta capa se encarga de comunicarse con la capa
DNS para intercambiarse las IP´S
TCP: Protocolo de Control de Transmisión. Es un
protocolo orientado a la conexión. Se encarga de la comunicación,
es el que marca el puerto
UDP: Protocolo de Datagrama de Usuario. Es un protocolo
no orientado a la conexión, no confiable
DNS: Aplicación que se encarga de traducir los nombres
de las paginas WEB´s a los números IP
¿Que nos aporta la Red a nivel de Seguridad?
Cuando nos preocupamos por la seguridad de un sistema, puede que el
perímetro de la zona haya crecido. Cada capa son puntos de vulnerabilidad
del sistema. Así que, mas tarde, veremos cuales son nuestras amenazas
en la Red en el punto de Vulnerabilidades.
Dos formas de montar Criptografia a través de la Red:
SMIME
SMIME es el MIME Seguro
Todo mensaje MIME esta formado por una cabecera que indica la versión MIME, el tipo de contenido y la codificación de dicho contenido. Se vale de los objetos PKCS7 para el transporte de la información
Un mensaje cifrado y codificado en MIME tendrá la siguiente forma:
Como la finalidad de la firma es poder comprobar la integridad del mensaje,
eligiremos la segunda forma, ya que resulta imprescindible que el mensaje
se pueda leer en cualquier agente de correo, y si el agente incorpora algún
modulo criptografico para comprobar la firma entonces esta será
comprobada.
Mensajes Adjuntos
Los mensajes Adjuntos son mensajes que contienen dos partes:
Los mensajes con múltiples partes pueden ser: mixed, alternative o signed:
Content-type: multipart/mixed; boundary = " "
Donde boundary nos limita las distintas partes del mensaje
Mensajes Cifrados
Son mensajes que en la cabecera del propio MIME contienen:
Content-type: application / x-pkcs7-encrypted
Content-transf-encoding: base 64
Y que al descifrarlo obtendremos:
Content-type: text/plain
LOS PKCS7
Los objetos PKCS7 sirven para:
- transportar firmas para esos datos
- para transportar certificados
Certificados:
Un certificado se caracteriza por:
CSP: Fabricante de parte del SW que se encarga de, si estamos
trabajando con un dispositivo, hacer que funcione dicho dispositivo
Vulnerabilidades
Sniffing: Alguien puede pinchar la red y escuchar la transmisión
de datos que se realizan a través de ella. Se puede evitar cifrando
los datos(la solución más básica).
Se puede hacer:
DOS: Denegacion De Servicios: Ataca al servidor y este deja de funcionar
Intrusión Directa de un Sistema: Cuando una persona gana acceso directo en un sistema sin enfrentarse a nadie de forma indebida y puede utilizar el sistema. Estos sistemas hacen el uso de los buffers overflow
Formas de Proteger en un entorno de red:
FIREWALL o Cortafuegos
Firewall: Es el conjunto de políticas y técnicas cuya misión es aislar al máximo un trozo de la red del resto de la red. Por ejemplo coger una empresa y aislarla(en la justa medida) de la red. Pero para ello hay que establecer las políticas, es decir, que es lo que puede pasar, quien puede pasar por el cortafuegos, etc... Así que tenemos dos tipos de políticas: una abierta y otra cerrada
Las políticas las implantamos mediante la técnica principal de Filtrado de Paquetes. Esta técnica consiste en establecer algún punto que une esa subred con la red general. Y ahí establecer un firewall que, mediante unas reglas, deje pasar a unos paquetes y otros no.
Un Firewall se configura mediante una serie de reglas y tendremos que decidir que política utilizar, si abierta o cerrada.
Tenemos 3 tipos de reglas: de entrada, de salida y de transito. Donde las de entrada y salida se aplican consecutivamente con la de transito
Y también tendremos que decir la IP (Origen y destino), 1 Mascara,
protocolo (TCP, UDP,...) y el numero de puerto
Amenazas programadas:
Virus
Los primeros virus surgen con el sistema operativo MS-DOS, que son los que vamos a tratar en este tema. Paralelamente surgen los virus del Mcintosh. En una primera clasificación, los virus se distinguen como:
En un diskette(floppy), el primer sector tiene una marca que nos permite el arranque.
Y en el MBR(Registro Maestro de Arranque) de un disco duro de un ordenador
es donde se determina una parte del registro(la tabla de particiones) y
determina cual es la tabla que tiene que arrancar
Virus de Arranque:
Se contagiaban a través de floppys. Lo que hacían era:
SI accedíamos al sector de arranque del diskette y el sector no estaba infectado
ENTONCES lo infectaba
Entonces, cualquier diskette que metíamos, solo accediendo a
el lo infectábamos
Virus de Programación:
Código que se pega al programa. Primero arranca el virus y luego el programa. Se contagia con el intercambio de programas. Por ejemplo, es lo que pasaba cuando intercambiábamos juegos de pequeños con mucha gente. Había dos tipos de programas:
Los virus más hábiles cogían las 3 primeras instrucciones del programa, añadía el código del virus al final del programa y cambiaba las 3 primeras instrucciones por una instrucción JUMP al virus que estaba situado al final del programa
.EXE : Tamaño de hasta 1Mb. La cabecera dice donde debe
ejecutarse el programa. El virus se ponía al final y cambiaba la
cabecera para que apunte al virus. El virus se pega al programa. El programa
funcionaba pero el virus ya se había cargado
Se instala en memoria. Se carga en la primera área vacía. Conseguía quedarse en la memoria e interceptar algunas funciones del SO, como la función de ejecución de u n programa:
Virus de Acción Directa:
Estos virus no se quedan en memoria. Busca los programas que ejecutamos y los infecta. Utilizaban técnicas de ocultamiento(stealth). Por ejemplo, el virus de los 100 años, que nos cambiaba la fecha del fichero.
Las técnicas más avanzadas: los virus se codificaban.
Hacían un bucle con un XOR, así el virus tenia códigos
diferentes porque se había XOReado a sí mismo cada vez que
se duplicaba
ANTIVIRUS:
Tenemos dos tipos de antivirus:
Un Sistema Operativo gestiona:
Un sistema puede ser:
USUARIOS:
Es un elemento del uso de la maquina. Se identifica en el sistema mediante un identificador y este no tiene que corresponder con ninguna característica del usuario.
Usuario ( nombre, id )
Donde nombre también llamado username, es el nombre que el usuario utiliza para identificarse ante la maquina y a este se le asocia un id.
Para poder acceder a un sistema informático el sistema procede
a identificar y autentificar al usuario, con el fin de comprobar si se
trata de un usuario autorizado a acceder a los recursos del mismo.
Etapa de Identificación
En todos los sistemas multiusuarios, cada usuario posee un identificador (ID) que define quien es y que lo identifica inequívocamente en el sistema diferenciándolo del resto. Usualmente este identificador es un código o nombre de usuario.
Esta etapa de identificación consiste en proporcionar al sistema
el identificador del usuario.
Etapa de autentificacion:
Una vez identificado el usuario, es necesario que demuestre de algún modo que es quien dice que es mediante:
1.- Algo que el usuario sabe
2.- Algo que el usuario tiene
3.- Algo que el usuario es
1.- Algo que el usuario sabe
La autenticación del usuario la realizaremos mediante una contraseña asociada o password. Es decir, al username le añadiremos una password, por lo tanto, esta palabra demuestra que el usuario es quien dice que es.
2.- Algo que el usuario tiene
En este caso el usuario posee algún objeto que demuestra su identidad, como por ejemplo una llave que permita acceder a la cuenta. La utilidad de este sistema se basa en que solo el usuario con un identificador dado puede tener esta llave, es decir, que no se la ha prestado a nadie o que no ha sido robada
3.- Algo que el usuario es
Este método se basa en autentificar al usuario mediante alguna
característica física que lo identifica inequívocamente.
Estas características son propias de cada individuo y por lo tanto
lo identifican del resto, como por ejemplo huellas dactilares, patrones
retinales, patrones de voz, etc.
PASSWORDS
¿Cómo se guarda la PASSWORD del sistema?
Si se guarda tal cual, alguien puede llegar al acceso de la password y poder conseguir todas las passwords.
Debido a la debilidad en las contraseñas elegidas por muchos usuarios, existe un método muy extendido para atacarlas denominado "ataque mediante diccionario". Con este sistema se consigue una copia del fichero en el que se almacenan los passwords cifrados ( /etc/passwd ). A partir de este fichero se cifran una serie de palabras que son las passwords probables. Por ejemplo, se usan os criterios de selección definidos anteriormente y además se cifran todas las palabras contenidas en uno o varios diccionarios. Las palabras cifradas se comparan con los passwords del fichero. Si alguna de ellas coincide, el atacante acaba de descubrir una de las contraseñas del sistema.
Así que la solución es guardarla mediante alguna clase
de función unidireccional. Las funciones unidireccionales
se utilizan entre otras cosas para la generación de listas de contraseñas
de un solo uso. Se trata de funciones que, como su propio nombre indica,
son sencillas de evaluar en un sentido, pero imposibles u muy costosas
de evaluar en sentido contrario. Esto es dada una función donde
es fácil calcular "y" a partir de "x", pero es computacionalmente
imposible obtener "x" a partir de "y". Para obtener la password cifrada
lo que se hace es cifrar con con el método DES siendo la llave la
password(DESpassword ).
FICHEROS
¿Cómo proteger los ficheros en un Sistema?
Mediante una tabla donde vienen representados lo usuarios y los recursos que tiene cada uno de ellos. Esta tabla se puede recorrer de 2formas:
ACL: privilegios asociados para un archivo o conjunto de archivos concretos. Los ACL se componen de tres elementos:
u, g, o (user, group, others): rwx (para saber a que grupo y usuario pertenece el fichero
En un directorio:
Cuando una programa que tiene el atributo s es ejecutado por una persona que no es el propietario de fichero, el proceso que se crea tiene como identificador de proceso el de la persona que lo ejecuta, pero tiene como efective UID(EUID) el de la persona que lo archiva