La seguridad informática es difícil de definir por tanto remarcaremos 4 objetivos( aunque estos no estén todos en el sistema). * Confidencialidad: La información mantenga un carácter privado, es un objetivo muy importante. Tenemos 2 formas de confidencialidad. - Con herramientas sw( como en anubis, pass y log) - Con herramientas hw( control de acceso , agentes de seguridad) También mediante la cristología, la información se transforma de una forma a través de unas formulas y solo la podrán ver aquellos que la posean * Integridad: Mantener la información en buen estado, que la información no este modificada y que este entera, se asegura, haciendo copias de seguridad, protegiendo el sistema .... * Disponibilidad: Cuando se necesite un dato que se pueda conseguir. Cuando un sistema tenga que dar unos datos, el acceso a estos datos, si son muchos, se ve afectada la disponibilidad de estos datos. La disponibilidad es una parte de la seguridad * Autenticidad: Tiene como objetivo establecer que la información es autentica, es correcta. La forma de saber si es autentico es el sentido común, si esto falla hay varios scripts que nos pueden ayudar. (fina digita), un pass es una técnica de autenticidad, de confidencialidad y de integridad. - Inconvenientes: (firma digita) fácil de conseguir una copia de la firma - El no repudio: es una propiedad muy difícil de conseguir. Una persona que a modificado algo que no lo pueda negar, Actualmente el no repudio se consigue ante juez o ante terceros Estos 4 aspectos son los más importantes de la seguridad. En una empresa será necesario de que haya unas normas de seguridad y por escrito tanto como una política, debe de revisarse periódicamente. Para diseñar una política de seguridad, es analizar los activos (mirar si eso vale tanto como para protegerse), después evaluar los riesgos bajo los que esta expuesto esa información (el valor de la información, el costes de las medidas y el coste que supone saltase las medidas de seguridad) Coste ataque>coste real> costes seguridad * Vulnerabilidad: Cualquier aspecto que puede dañar el mismo. También puede ser un posible fallo que exista en el punto él, Es el punto débil. * Amenaza: Es el agente que va a atacar a ese punto débil. * Contramedida: Toas las técnicas del sistema contra la amenaza, las vulnerabilidades, se pueden clasificar en: - Físicas: Con lo que tenga que ver con el entorno - Naturales: las que se ven afectado por el ambiente. - Importantes las que tienen que ver con el hw o el sw (bug) - Comunicaciones: problemas que surgen por estar conectados a una red. El hecho de estar conectado a una red es exponerlo a ataques, estaría amenazado por un gran perímetro. - Humana: Es la mayor vulnerabilidad del sistema. También es la más controlada. Ya que nosotros podemos confiar en esa persona. Los usuarios pueden causar defectos en la maquina, ya sea intencionado o no. Las amenazas pueden clasificarse como: * Basándose en el efecto: - intersección, Cuando consigue acceso a la parte del sistema que no le es permitida - modificación: Requiere una intelección. Ya no requiere solo acceder sino también cambiarla - interrupción: Interrumpir el funcionamiento de un sistema - Generación: Añadir código, introducir mensajes en líneas de comunicación * Basándose en el origen. - Naturales o físicas. - Involuntarias - Voluntarias o intencionada Frente a todo esto están las contramedidas que se clasifican en 4 capas, actúan como encadenadas: - Físicas: Aplican mecanismos para impedir el acceso físico. - Lógicas: Medidas que podemos añadir para proteger los datos. - Administrativas: Política de seguridad para ponerla en practica. - Legales: Son las últimas en la cadena. Son disuasorios o actuación a porteriori. Ideas para diseñar política de seguridad: (principios básicos) - Principio del menos privilegio: Cualquier objeto debe tener solo loas privilegios de uso que le corresponden ni más ni menos. Niveles estrictamente mínimos para poder trabajar. En el pc que se quiera mantener con una seguridad mínima, lo primero que hay que hacer es proteger lo físico. Si se prohíbe tocar la torre nadie lo podrá apagar, por tanto podrá seguir funcionando. - La seguridad no se obtiene con la oscuridad. Para proteger algo se esconde. Al final siempre se sabe - El eslabón mas débil, es el primero en romperse, si hay muchas medidas de seguridad, esta siempre e romperán por la más débil - Defensa en profundidad: Consiste en un mecanismo sucesivo. Si falla uno esta el otro detrás. - Esta seguridad en caso de fallo: Cualquier mecanismo si falla, la maquina sigue segura. - Principio de la partición universal: una cosa debe ser de todas las personas que se vean afectadas por ese fallo. Fundamentos matemáticos de la criptología. Para la confidencialidad hay una herramienta muy útil: La criptografía. Criptografía: Es el arte de ocultar la información {ciencia de carácter histórico}. Una serie de métodos para transformar una información en otra que no pueda ser entendida por otra persona. El criptoanálisis es la Técnica para intentar averiguar la información criptaza. Puede ser utilizada de forma legal o ilícita. Va a depender de cómo haya sido criptaza. Será más fácil descifrar una información larga que no una corta. Si podemos tener una información cifrada que ya tenemos su original nos será más fácil descifrarla y obtener sus transformaciones. Un método criptográfico tiene que ser una herramienta capaz de transformar una información en otra in entendible y que se pueda deshacer siempre que obtengamos el consentimiento, de forma autorizada. Para cifrar y descifrar tendremos que tener la clave. M= Posibles mensajes sin cifrar C= Conjunto de todos los mensajes cifrados K= Posibles claves E= Ejemplos de cifrados. D= Conjunto de ejemplos descifrados. La propiedad que tiene que usar un criptosistema es Ek(m)= c ? C ; m ? M Se conocen 2 tipos de criptosistemas: - Clave publica: ES una única clave que se usa para cifrar y descifrar. Hay dos claves, una publica y otra privada, una se gasta para cifrar y otra para descifrar, las llaves van por pares, dada una llave publica solo lo podrá descifrar con una llave privada, y no hay dos iguales. Todos podrán cifrar con la llave publica pero solo nosotros lo podremos descifrar con la llave privada. Si yo cifro con la llave privada y alguien lo puede descifrar con la llave publica, obtendremos autenticidad, ya que solo una puede descifrar la otra. - Clave privada. Son los más sencillos y antiguos ( El método cesar, con la vara de mando, enrollaba el mensaje en la vara y podía leer el mensaje, la clave seria el grosor), En el proceso solo se usa una clave privada. Los criptosis, son muy costosos de implementar ( gran coste algorítmico), cuanto más grande es la llave más cuesta de descifrar, ( esto es así por la evolución de los ordenadores). Los de Clave publica aparecen en el año 66, el primer algoritmo es el de RSA,( años después NSA, dejo que lo habían descubierto antes, pero por motivos de secreto no se podía decir) tiene un equipo que se dedica a estudiar la criptologia. El NISP (otra agencia Americana) a intentado estandarizar la criptologia, incluyendo lo empresarial y lo oficial, el DES que es un algoritmo de clave privada, se puso fuera de circulación porque se comprobó que en pocas horas se descifraba sin ningún problema. Fundamentos teóricos: Entropía: Teoría matemática de la información, sopesa la información, la entropía es una propiedad de la naturaleza, aparece en la termodinámica (La energía o se transforma en trabajo sin que haya una perdida de energía). En esta teoría matemática aparece la entropía y aumenta en este proceso. Medida de desorden y a la uní formalización de las cosas. Diremos que hay mucha entropía cuando hay mucha imprebisibilidad. Al comprimir lo que se hace es usar la falta de información que hay. ( por ejemplo: Hay 49 bolas negras y una blanca en un saco, la información comprimida seria 49xN + 1xB) comprimirá si no hay mucha información, sino no podría comprimirlo. E un sistema donde pueden suceder una serie de procesos aleatoríamente, le asociamos una probabilidad . se define cantidad de información para el suceso P(xi), la probabilidad va de 0 a 1, pronto le aplicamos logaritmo, pero cambiando el signo que el logaritmo menor a 1 da negativo. Entropía = H = -?xi P(xi) log P(xi) Dado un sistema de n elementos la entropía sera: 0<= H<= log2 N Cuando el sistema es mas predecible la entropía es menor. La entropía es una medida de la redundancia de la información. La redundancia de un mensaje en la entropía Rk = (Hk(M))/K --> ese seria el índice real Acamos los bits necesarios parra codificar esos mensajes. R= lg2(m)--> índice absoluto D=R-r= redundancia. Si tenemos dos sistemas existen distintas formas de tratar las probabilidades. . Probabilidad conjunta p(xi,yi): esta condicionada a que pase sin que los dos sucesos estén comunicadas. . Probabilidad condicionada p(xi/yi) H(x,y)=-( ( p(xi,yj)log2 (p(xi,yj))conjunta. H(x,y)=-( p(xi/yj)log2 (p(xi,/yj))( H(x/y)= -( ( p(xi,yj)log2 (p(xi/yj))condicionada. Probabilidad total.: H(xy(=h(x)+h(x/y) H(x/y)<=h(x) Si x e y son independientes h(x/y)=h(x) Definimos cantidad de información que x contiene sobre I I(x,y)=h(y) ~V h(y/x) Se define script seguro de Xanon como I(c,m)=0 El hecho de conocer C no nos dice nada sobre M. Para que un sistema cumpla esto el card(claves)=card(mensajes). En la práctica no es algo manejable, pero se puede hacer. La desinformación h(m/c) como la entropía de M condicionada a C. Si h(m)=h(m/C)tenemos un sistema de seguridad DES. Otro que podemos usar es h(k/c) (distancia de unicidad) Longitud mínima del mensaje cifrado que lleva h(k/c) a 0 La cantidad de mensaje cifrado que necesita para descubrir la clave. 2. técnica de Xanon: Confusión: Intenta ocultar la relación directa entre C y M. La sustitución consiste en sustituir un símbolo plano en otro. Difusión: consiste en difundir la información por todo el texto cifrado. Esto se consigue mediante la transformación. Algoritmos de Clave asimétrica: Ideas: Se basa en ideas matemáticas. Aritmética modular; Trabaja con conjuntos de nº restringidos a un tamaño Dados A, B, n ( N diremos que a ( b (mod n) si a=b+Kn Máximo común divisor Dados A y B averiguar el numero máximo que divide a los dos. Inversas si m.c.d.(a,n)=1 eso significa que a tiene inversa en modulo n ( a ~V1/ a. a-1 ( 1 (mod n) Se dice que dos números que cumplan esto son primos entre si. Denominareis al conjunto de residuo, al cr={0,1,2,~E.,n-1} y al conjunto reducido de residuos sera el que sean primos entre si con uno determinado. Ejemplo: conjunto reducido de residuos respecto al 12 seria CRR12={1,5,7,11} El card( CRR) = función de euler 0(n) Por tanto el Algoritmo será: Exp. (a,b) Z=b X=a R=1 Mientras (z>0) { Si z% 2 =1 R= r*x R=x*s; Z = z/2 } Este algoritmo consiste en no hacer b multiplicaciones sino Log (b) Para saber que un nº es primo o para sacar los primos de un nº se hace pro fuerza bruta. Para saber si un nº es primo: descompondremos el nº y: descartamos los pares y con los impares, 1,2,~E.raíz cuadrada d nº vamos dividendo hasta no encontrar ninguno que lo divida. Entonces es primo. Primos fuertes ( si p y q) - MCD [ ( p-1), (q-1) ]--> nº pequeño - P-1 y q-1 Tienen algún factor primo que es grande ( p~R,q~R) - p~R-1 y q~R-1 Tienen algún factor primo que es grande - p~R+1, q~R+1 Tienen algún factor primo que es grande Esto son medidas anticriptoanálisis N= p*q y cumple las propiedades anteriores. Para generar un ñ1 Aleatoria cogemos un n1 de la tarjeta de sonido y nos da un aleatorio bueno puesto que coge el ruido del ambiente. O una señal de la antena de TV. Algoritmos de cifrado: - Método cesar: La banda del palo, Alfabeto desplazado n cifras. - Algoritmo monoalfabético: * Malo porque siempre cambia una letra por otra, no varían los cambios, se basa en niveles * Se ataca por fuerza bruta * Se pueden medir las probabilidades en que salen las letras - Algoritmo polialfabético: ( e vigenere) * Nivel 3,6,2: desplazados el alfabeto tantas veces como nos indican los números, así, quitamos la probabilidad de repetición de las letras pues cada vez la misma letra tiene distintos sustitutos Ci=(mi +ki mod l) mod 256 - Cifrado de transposición. Se coge un vector de opiniones de tamaño n y se será el texto en palabras de ese taño y se anotan según hayamos puesto las posiciones en el vector. - Cifrado de cambio filas columnas Es muy difícil de implantar El mensaje solo debe pasar una vez por el cifrado Triple DES: Eki(Dkc(Eki(rn))) Crifra bloques de 8 bytes, Algoritmos rc2,rc4,rc5 ~E.. Los que más rápido cifra son los de Rives, trabajan fácilmente con distintas capacidades KAS: Algoritmo que cifran por bloques, tienen en esencia unas serie de propiedades que se convierten en defecto. DES: Entra un bloque de 8 bytes y sale otro de 8 bytes. Cada cifrado es independiente de los otros. Si hay un error solo afectará a un bloque y mientras no pillen las claves los otros bloques estarán seguros. El DES tiene 4 claves que lo que entra es lo que sale y 12 semidebiles que no sale lo que entra pero casi. El modo más utilizado por el DES es el cbc. Lo que hace es una xor con el resultado del mensaje y el mensaje a criptar. Se puede descifrar tanto de derecha a izquierda como al revés. Hay firmas que por ejemplo en un telnet cifrado lo que haces es por cada byte que transmites, el lo rellena hasta 8 aleatoriamente, esto se llama cifradores de string o por flujos. Hay varias formas de hacerlo una de ellas es CFB. Cifrado de clave publica. Función de euler, nos dice todos los primos entre si. No hay algoritmo para sacar la factorización, e inverso a d Por tanto denominaremos al pack de números (e,n) clave publica (d,n) clave privada. Como lo que sabemos es n y no integral cerrada de (n), no hay forma de sabiendo e sacar d, y que son inversos a la integral cerrada de n y no de n C=me(mod) m=cd(mod n) A esto se le llama RSA, este algoritmo tiene algunos inconvenientes. - El RSDA es muy lento, y no hay que utilizarlo para cifrar textos largos, facilita los ataques para los textos cifrados. La longitud de clave no esta predeterminada. 512 bits seria una clave débil, pero el RSDA no tiene ningún problema para aumentar los bits. La clave publica, es publica y no pasa nada pero la privada va cifrada con una triple DES y te pregunta con que llave DES la quieres guardar. Por tanto el fichero se guardara con una llave para protegerla. Con la opción de no DES no te pie esa llave Firma electrónica. Tenemos dos sujetos con sus dos llaves cada uno, si quiero enviar un mensaje de A a B y quiero que sea secreto tiene que ser confidencial y codificarla. c= Epb(m) Cuando el mensaje le llega a B, para descifrarla DKB(c)= DKB (EPB(m))=m De forma que B la descifrara con su clave privada y solo lo podría entender él. Pero para ello entra en juego la autenticidad, Si A lo codifica con su clave privada, B usara la clave publica de A para descodificarla y si puede, ya esta autentificado ese mensaje. Dos problemas: - Es muy lenta, generamos aleatoriamente un numero S, que sera una llave privada de un solo uso, la usaremos una vez y la borraremos. Con S cifraremos el mensaje y se coge la clave de la caja donde la guardamos y esta la ciframos con la clave publica de B, así verificamos el mensaje. - Como sabemos que esa clave es de A y no de otro Función de resumen. - La entrada de la función Hash es de un tamaño x y la salida de tamaño fijo. - Dado un mensaje y su salida, cualquier cambio mínimo del mensaje tiene que producir unos cambios enormes en la función resumen - Dado un resumen a de ser extremadamente difícil encontrar un texto que lo descifre. Una función de resumen seria sumar todos los caracteres, esta cumpliría la primera propiedad pero no la segunda, ya que si cambio dos caracteres de sitio no cambia el resumen. Rives tiene la mds (firmas de 128 b. ) y la estándar que usa todo el numero será Sha1 o Sha2. Tenemos una clave, calculamos su resumen y la ciframos con la clave privada de A y esto se lo metemos en una caja con el mensaje, el receptor tiene que comprobar la autenticidad, por tanto si es si, sabe que el mensaje es autentico, y si es no, no es autentico pero puede leer el mensaje. Si yo quiero mandar un mensaje cifrado y firmado se puede mandar de dos formas: - cifrado y firmado - firmado y cifrado Si lo mandas de la primera forma se ve que es un mensaje cifrado y luego firmado por eso se firma y luego se cifra y además si lo mandas con otro remitente, si lo interceptan no podrán ver nada, si es el destinatario lo descifrara y vera en la firma quien era el remitente. ¿Cómo podemos saber que PB es de kB? Un método es cara a cara, entonces sabes que si es el 100% o a través del teléfono. Otro método es a través de la confianza, para saber en quien confiar se aplica una especie de método, siempre a través de notarios,. El notario te dirá si esa PB es PB, esto en la actualidad se llaman fabricas certificadoras. JPE se basa en la confianza pero en vez de usar a notarios como intermediarios usara a unas personas de las cuales tengamos un cierto grado de confianza. El notario solo interviene en el momento de confirmar la autenticidad ya a partir de ese momento el notario ya no intervine para nada y nunca mas. Certificados: Un certificado puede incluir lo que queramos, lo haremos poniendo un OID y lo que queramos. En la practica se utilizará las claves privadas y las publicas Irán dentro de un certificado, este certificado lo firmara otra entidad certificadora. Un certificado autoafirmado es el que esta firmado con la llave privada que corresponda a la llave publica que lleve ese certificado. En teoría, para obtener un certificado tendría que venir dentro de la cpu. En la practica lo que se hace es que los certificados van dentro del software. Para solicitar la autenticidad del certificado, hay una empresa. RSA LAB ~V PKCS Si solo se quiere que se certifique el e-mail la autoridad certificadora solo podrá certificar el mail, por muchos más campos que lleve el DN. Para hacer llegar la clave privada de forma segura se hará a través del webserguro, que cuando tu acabas y apagas el ordenador, va todo a la papelera de reciclaje. En la practica uno mantiene su base de datos con las entidades certificadoras y otra base de datos con datos de personas que ha verificaron con la base de datos de la entidad certificadora. En un principio las personas que no están autentificadas no deberían guardarse. Si se perdiera la clave privada, puedes pedir otro certificado, pero como no pueden haber dos certificados iguales.., se puede invalidar ese certificado, por lo general esto se hace cuando la llave privada se conoce por más de 1 persona. Los dos estados validos de un certificado son validos y caducados, y para estos casos esta el CRL, que lo ha hace es una lista de números de serie, el DN de la autoridad certificadora y la propia autoridad certificadora. Para saber si un mail ha estado enviado en el día que tu dices hay un sellado de tiempo que hace la función de un notario. ISO establece un conjunto de reglas y estas establece un subconjunto que son las que nos interesan. El ISO nos da una forma de codificación binaria. (VER) pero como es muy lioso usaremos el DER. Esto lo utilizaremos para la criptologia. No tiene un formato agradable, pero esto se puede cambiar cogiendo un expansor y metiéndolo en el fichero binario (uuencode, base 64: es el ASCCI en un subconjunto del ASCII, el subconjunto será los caracteres que no hagan año a la vista, pero tiene una delimitación, ~S de donde no hay no se puede sacar~T, para mantener la comprensión esto tiende a la expansión, se corren los bits y la concatenación se corta, de 2bits a 4 bits. Se estiran ~Smimecode~T este programa en linux es quien hace el estiramiento. Esto se desarrollo para el correo electrónico. Se convierte de binario a base 64 y este se transfiere por mail. PEM Es el formato utilizado para el mail, consiste en coger información binaria pasar a a base 64 y a este se le añade delante unas rayitas begin y al final lo mismo pero con End. PKCS12: Por necesidad usa el formato DER pero para los certificados podemos elegir. La rutina del PEM todo lo que hay antes y después del begin o del end ( respectivamente) lo ignora. El PEM es una base 64 con el begin y el end PKCS7: incluye la posibilidad de transportar datos y certificados, en un entorno criptográfico aunque estos datos no tienen porque ir cifrados. En el Outlook puedes decir que envié los datos y la firma en un bloque MIME o en dos partes los datos en un bloque y la firma en otro de objeto PKCS7. Datos cifrados y firma no es muy recomendado porque la firma se ve desde fuera, por lo que incumple una de sus funciones, proteger los datos y la firma. Lo que firmamos es el resumen del mail. Como se manda un mail firmado Firmar el mensaje es coger el mensaje sacar un resumen y con la llave privada del receptor firmarlo. Todo esto podemos meterlo en un PKCS7 o separa el mensaje y ( la firma y el certificado) por otro parte, por lo que el mensaje iría tal cual y la firma y el certificado irían en un objeto PKCS7. El canal de los mails por lo general son inseguros, El cifrado en red es la forma sencilla de asegurara los datos en la red y así podemos asegurar la autenticidad y el firmado a través de la red Cifrado en red: 1, extremo a extremo y 2, cifrado de enlace. En el cifrado de enlace son los enlaces los que actúan, el cifrados y descifrado se hace a nivel de usuario. En el de enlace es el software de red quien se encarga de cifrarla y será el otro software de red el encargado de descifrarla, desde la capa de red hasta las aplicaciones no hay un canal seguro por lo que es aconsejable usar siempre de extremo a extremo. En el cifrado de enlace lo que cifra es la transmisión y beneficia a todas las aplicaciones pero su inconveniente es que hay que fiarse luego del sistema operativo, el ipsec es lo más serio que se ha hecho y forma parte al pv6 y permite extender a todo Internet el cifrado de enlace. No se podrá controlar con el remoto del s.o. SSL es un protocolo del netscape, TLS es uan generalización del SSL ( es un 99% igual) pro ahora lo lleva una empresa publica y no netscape. Serian unos protocolos sin sesión. En el caso del IPSEC se cifraría en la capa IP y también se descifraría, hace unos años habían unas tarjetas de red que cifraban, estas lo hacían en la capa de ethernet. SSL Tiene básicamente 3 propósitos: confidencia, autentificación del servidor y autentificación del cliente. La idea básica es que podamos conectar unos servidores a unos clientes, cifrado y que el servidor diga quien es. Para que funcione el servidor tendrá un par de llaves, dentro de sus correspondientes certificados, tendrán una fase inicial de autentificación. Cliente y servidor tienen que ponerse de acuerdo para saber lo que tienen en común. Una vez ya se han puesto de acuerdo con los protocolos el servidor manda el certificado al cliente y este lo verifica ( utilizando la clave publica de la unidad certificadora) descifra y mira, si la firma es autentica puede estar seguro de que esa llave publica del certificado son verdaderas. Po r tanto compara y si es igual es cierto y si no te avisa para que tengas cuidado. El segundo paso será encriptar algo con la llave publica y se la envía al servidor, le envía un reto, y si el servidor lo entiende es porque si tiene la llave privada, y lo que envía será una llave de sesión cifrado con la llave publica y el servidor si puede descifrarlo podrá conseguir la llave de sesión y a partir de ahí podrán conectarse confidencialmente. Si consigue superar el reto es porque es autentico Authentification http Tiene su forma autentificadora, tiene una base de datos con user y pass que es lo que pide a su cliente. La pagina se configura para pedir la autentificación y si la pasa, le deja entrar en la pagina, pero esa ventanita la tiene que sacar el navegador. El cliente pide la pagina y el servidor mira si en la petición va la user y la pass, si viene entra y si no el servidor saca la venta y este vuelva a enviar la petición el pass y el user. Cuando nos da la venta para que introduzcamos la pass no envía una pagina que solo nos mostrar si le damos a cancelar. .htacess: Aquí es donde Irán las directivas Demy y allow pero a parte de estar también podrán estar, SSLRequireSSL( que si no accedes con SSL no te deja entrar) SSLRequire( que una vez estas en SSL pide los requisitos que vendrá dado por una expresión).