Anda di halaman 1dari 33

El objetivo de las medidas de seguridad es minimizar eficientemente los riesgos.

Riesgo = probabilidad x impacto, pero el impacto sobre intangibles es dificil de evaluar. CONFIDENCIALIDAD: proteger los datos contra la divulgacion no autorizada INTEGRIDAD: protege (pero no repara) los datos contra su modificacion no autorizada DISPONIBILIDAD: protege al sistema para que provea los servicios segun su diseo AUTENTICACION DE CORRESPONSAL: verifica la identidad de quien declara estar en el otro extremo AUTENTICACION DE ORIGEN: verifica la identidad de quien declara ser la fuente de los datos NO REPUDIO: protege contra la falsa negativa del remitente, es decir, el remitente no puede negar ser la fuente. Sirve para ambos extremos. CONTROL DE ACCESO: protege recursos contra su uso no autorizado IMPUTABILIDAD: deja constancia de las acciones y sus responsables FIRMA: provee integridad, autenticacion, no repudio y no es reutilizable ATAQUES Pasivo: 1-Intercepcion: ataca la conficencialidad, mediante divulgacion del contenido o analisis del trafico Activos: 2-Modificacion: ataca la integridad, alterando el contenido, el orden o la temporizacion 3-Fabricacion: ataca la autenticacion, insertando mensajes fraudulantos 4-Interrupcion: ataca la disponibilidad

Identificar amenazas: SPOOFING IDENTITY: hacerse pasar por otro TAMPERING WITH DATA: cambiar datos REPUDIATION: denegar los datos INFORMATION DISCLOSURE revelear informacion confidencial DENIAL OF SERVICE: atacar la disponibilidad ELEVATION OF PRIVILEGE: gralmente se da por errores u omisiones en las politicas de seguridad Ponderar amenazas: DAMAGE POTENTIAL: hace mucho dao? REPRODUCTIBILITY: es facil de hacer? EXPLOITABILITY: se puede replicar en varios casos?

AFFECTED USERS: a quien afecta? DISCOVERABILITY: es facil de detectar?

CRIPTOGRAFIA: arte y ciencia de proveer seguridad a los mensajes. CRIPTOANALISIS: arte y ciente de vulnerar la seguridad provista por la criptografia. CRIPLOTOGIA: rama de las matematicas que abarca ambas. Se supone que los algoritmos son conocidos, residiendo la seguridad en el secreto de la clave. Ataques mas comunes: SOLO TEXTO CIFRADO: intenta recuperar texto llano y/o la clave conociendo solo mensajes cifrados TEXTO LLANO CONOCIDO: intenta recuperar la clave conociendo un mensaje cifrado y su texto llano correspondiente TEXTO LLANO ELEGIDO: propone mensajes a cifrar y analiza el resultado TEXTO CIFRADO ELEGIDO: propone mensajes a descifrar ATAQUE ORACULO: se proponen textos y se analizan las respuestas, tiempos en detectar los errores, etc. (Por eso a veces en lugar de cortar el proceso ni bien se detecta el primer error es mejor seguir procesando hasta el final para no dar informacion al atacante de cuan cerca esta de vulnerar la clave)

Un algoritmo criptogrfico es incondicionalmente seguro si una cantidad ilimitada de texto cifrado no proporciona suficiente informacin para vulnerarlo. Slo se conoce uno: el one-time pad, que es poco prctico (requiere clave aleatoria no reutilizable). Los dems algoritmos se pueden vulnerar por fuerza bruta, descifrando con cada clave posible hasta obtener un mensaje con significado. Una clave de n bits requiere, en promedio, 2n-1 pruebas. Para algunos algoritmos existen mejores ataques. Un algoritmo es computacionalmente seguro si no se puede vulnerar con los recursos disponibles. Se tiene en cuenta: cantidad de datos necesarios, tiempo de procesamiento, necesidades de almacenamiento. Pero tambien hay que tener en cuenta los recursos futuros: puede que hoy sea seguro, pero dentro de 10 aos cuando haya mas recursos lo sera? CLASIFICACION DE LOS CIFRADORES: Por cantidad de claves: -SIMETRICO: una clave secreta -ASIMETRICO: 2 claves, una publica y otra privada Por modo de procesamiento: -BLOQUES -FLUJO CONTINUO (stream) Para algoritmos simtricos la clave secreta debe almacenarse y distribuirse en forma confidencial. Para algoritmos asimtricos la clave pblica debe distribuirse en forma autenticada y la clave privada debe almacenarse en forma confidencial. El cifrado asimetrico provee AUTENTICIDAD, INTEGRIDAD Y FIRMA

UN SISTEMA CRIPTOGRAFICO: SE DEBILITA SI LOS MENSAJES TIENEN ESTRUCTURA - NO EVITA LA ELIMINACION DE DATOS - NO EVITA LA DENEGACION DE SERVICIO - NO SIEMPRE EVITA EL ANALISIS DE TRAFICO - SE INUTILIZA SI EL ATACANTE ACCEDE AL TEXTO LLANO, A LA CLAVE, ALTERA EL SOFT O CONOCE ALGUNA FORMA DE ROMPER EL ALGO.

CRIPTOGRAFIA SIMETRICA

Los algoritmos son mas rapidos que los de clave publica, pero es necesario compartir la clave en forma segura. La deteccion de errores se hace de forma INTERNA, siempre sobre el texto llano, ya que si se altera el mensaje cifrado cambia tambien el CRC dentro de este y fallaria al detectar errores.

Tiene que cumplir los principio de CONFUSION (modificacin de los smbolos del mensaje original SUSTITUCION: 2n! mapeos posiblies) y DIFUSION (cambiar el orden de los smbolos del mensaje original, pero sin modificarlos - PERMUTACION: n! mapeos posibles). PERMUTACION y SUSTITUCION se pueden combinar en cascada. PROPIEDADES: AVALANCHA (al cambiar un bit de entrada cambian aprox. la mitad de bits de salida), COMPLEJIDAD (cada bit de salida es una funcion compleja de todos los bits de entrada).

Los cifradores simtricos proveen: Confidencialidad: slo quienes conocen la clave secreta compartida K pueden obtener un texto llano vlido al descifrar. Autenticacin: slo quienes conocen la clave pueden cifrar de modo de obtener un texto llano vlido al descifrar. Integridad: cualquier alteracin en el texto cifrado impide que se obtenga texto vlido al descifrar No provee firma digital pues carece de no repudio.

CIFRADOR DE FLUJO

Ci = Pi XOR Ki

Pi = Ci XOR Ki

Ki = Pi XOR Ci (ataque texto llano conocido)

Tener en cuenta tambien que: Ci XOR Cj = Pi XOR Pj si Ki = Kj. Luego, un sistema es PERFECTO solo si la clave Kn es siempre aleatoria para cada mensaje y jamas se repite (Vernam-Mauborgne onetime pad) CIFRADOR DE FEISTEL Varias pasadas, donde en c/u se substituye la mitad izquierda, sometiendola a la XOR con la funcion F de la mitad derecha y la subclave. Luego se permutan las mitades y se continua varias veces mas. Luego del ultimo round se vuelven a invertir las mitades.

Para descifrar se emplean el mismo algoritmo, pero con las subclaves aplicadas en orden inverso

DES (data encryption standard) Se cifra de a bloques de 64 bits con una clave de 56 bits y 16 vueltas (especificado en FIPS 46-3). Hoy en da la clave es muy pequea para los procesadores actuales.

Dentro de cada S-Box, los 2 bits de entrada determinan la tabla de substitucin a aplicar las combinaciones de los otros 4 de la entrada y as obtener la salida.

Desde el punto de vista del criptoanlisis, existen dos mtodos de ataque: Bsqueda exhaustiva: usando un ataque con texto original escogido. El texto original escogido m, es cifrado con cada una de las n posibles claves k hasta que Ek(m) = c, siendo c el texto cifrado conocido. El tiempo requerido es T = O(n) y la memoria S=O(1). Bsqueda en tablas: usando un ataque con texto original escogido. Sea m el texto original escogido; cada texto cifrado, ci = Eki(m), es precalculado para i= 1, ..., n. Las claves ki son ordenadas y, junto con los textos cifrados ci, puestas en una tabla, de manera que la clave correspondiente a un texto cifrado dado pueda ser hallada en un tiempo T=O(1) con un requerimiento de memoria de S = O(n).

El descifrado se realiza utilizando el mismo algoritmo pero invirtiendo las claves, es decir: en la primera iteracin se utiliza la clave interna K16, la K15 en la segunda, y as hasta llegar a la K1 para la ltima iteracin. Esto se hace as porque la permutacin final IP-1 es la inversa de la permutacin inicial IP. Por otra parte: Ri = Li-1 Li = Ri-1 XOR F(Li-1, Ki)

TRIPLE DES (TDEA)

El DES simple es vulnerable a la fuerza bruta y esta demostrado que el doble des no incrementa la seguridad. Si K1 = K2 = K3 TDEA funciona como un DES Modos de operacion: se apunta a brindar una relacion performance/seguridad aceptable segun la aplicacion

1. ECB (electronic codebook): el texto original se procesa en bloques disjuntos de 64 bits, cuyos bloques de salida, tambin de 64 bits, se concatenan para formar el texto cifrado. Tiene el inconveniente de que es susceptible a ataques estadsticos y/o ataques sobre la clave, con un texto original conocido, sobre todo cuando las cabeceras de los textos tienen un formato estndar.

2. CBC (cipher block chaining): se divide el texto en bloques y se cifran en cadena, con los bloques anteriores influyen en el cifrado del bloque actual. impide la suprecion e insercion de bloques de texto cifrado ya que no se podria desencriptar el resultado final; tambien los ataques estadisticos se dificultan por la interdependencia del texto cifrado a lo largo del proceso. Para el primer bloque, al no existir un bloque previo, se utiliza un Vector de Inicializacion aleatorio(que tiene que ser integro, el mismo para encriptar se usa para desencriptar. Un cambio en el IV me cambia solo el primer bloque). Para poder desencriptar sera necesario transmitir ese vector. No es necesario que se transmita de forma segura.

3. CFB (cipher feedback): transforma el cifrador en bloque en cifrador de flujo.

Notar que para descifrar se usa el mismo proceso, solo que los Ci sirven de entrada a las XOR y los Pi seran las salidas (Ci sigue siendo entrada del SHIFT REGISTER siguiente) 4. OFB (output feedback): el texto plano no influye en la encriptacion subsifuiente. Se usa siempre la misma K, pero los bits de Oi siempre cambian, comportandose como un buen generador pseudorandom ( Pi XOR Oi = Ci ; Pj XOR Oj = Cj luego

Ci XOR Cj = Pi XOR Pj <=> Oi = Oj)

5. CTR (counter): genero los Ti en base a un clock, con un contador. Luego, si el algoritmo de cifrado tiene un buen efecto avalancha, los cambios de pocos bits en el contador implican un cambio de muchos bits en el texto cifrado El contador tiene que proveerme de suficientes bits para que no se repitan los valores, a menos que cambie la K al momento de la repeticin.

PROPAGACION DE ERRORES MODO ECB CBC CFB OFB CTR Efecto de errores en Cj RBE al descifrar Cj RBE al descifrar Cj SBE al descifrar Cj+1 SBE al descifrar Cj RBE al descifrar Cj+1 y sig. SBE al descifrar Cj SBE al descifrar Cj Efecto de errores en IV o Tj No (sin IV) SBE al descifrar C1 RBE al descifrar C1 y sig. RBE en todos los Ci RBE al descifrar Cj

RBE: random bit error SBE: specific bit error Desde el punto de vista de la seguridad el SBE es mas grave, ya que el atacanta sabe cual es el bit que esta cambiando. AES (ADVANCED ENCRYPTION STANDARD) Especificado en FIPS-197. Algoritmo Rijndael, de Daemen y Rijmen. Ana seguridad y eficiencia. Bloque de 128 bits (palabra de 32 bits). Clave de tres tamaos posibles: HASH Con una entrada M provee una salida H(M) de tamao fijo y menor a la entrada. Es RESISTENTE A PREIMAGENES (unidireccional, no es posible obtener M a partir de H(M) ), RESISTENTE A SEGUNDAS PREIMAGENES (no hay dos M que generen un mismo H(M)), RESISTENTE A COLISIONES (idem anterior) AES128: 128bits, 10 rounds AES192: 192 bits, 12 rounds AES256: 256 bits, 14 rounds

El nivel de esfuerzo para atacar un hash de n bits de salida es: 2n si se busca una segunda preimagen. 2n/2 si se busca una colisin.

Paradoja del cumpleaos: con probabilidad mayor que el 50%, en un grupo de slo 23 personas habr al menos dos con el mismo cumpleaos. Para grandes nmeros, el tamao del grupo es aproximadamente la raz cuadrada de la cantidad de opciones Adems, pueden existir ataques cripto-analticos contra la funcin de compresin f que se usa internamente en el algoritmo MD5 (Message Digest Algorithm): RFC 1321. Salida de 128bits (ya no es computacionalmente seguro ya que el esfuerzo es 2(128/2)). Bloque interno de 512 bits con 64 rounds Familia SHA(secure hash algorithm): FIPS-180-2. Dependiendo de la version, se utiliza un tamao de bloque y de salida mas grande. La fortaleza esta dada por el tamao en bits de salida.

Ambos especifican el mecanismo de padding necesario para obtener una cantidad entera de bloques. MD5 y SSH-1

1 -Al mensaje que se quiere hashear se le agrega un bloque y adems se le incorpora el tamao del mensaje real. 2- El mensaje se divide en rodajas (en este caso de 512 bits). 3- A cada uno de estos bloques se le hace un procesamiento parecido. 4- Adentro de la f hay rounds( 128 md5 / 160 SHA-1). El HASH puede utilizarse junto a una clave compartida S para brindar mayor seguridad de autenticacin. RECORDAR: si el Hash no lo cifro, ya sea de forma independiente o junto al mensaje, no voy a estar brindando autenticacion !

MAC (MESSAGE AUTHENTIFICATION CODE) Usa clave. Con una entrada M de cualquier tamao provee Ck(M) de tamao fijo y pequeo. Es RESISTENTE A PREIMAGENES, A SEGUNDAS PREIMAGENES Y A COLISIONES. Basado en hash (HMAC) o en cifrador (CMAC) El nivel de esfuerzo para atacar con fuerza bruta un MAC de n bits de salida y k bits de clave es: 2k si se intenta descubrir la clave. 2n o 2n/2 si se busca segunda preimagen o colisin, respectiva-mente. Al no conocer la clave se tiene que trabajar proponiendo entradas al algoritmo y analizando las salidas.

HMAC RFC 2104. Clave de cualquier tamao, aunque se recomienda entre la mitad y el total de la cantidad de bits del resultado. Internamente utiliza un hash (SHA, ya que MD5 est depreciado). 1. 2. 3. 4. 5. Al mensaje se le pega una subclave de la clave que se puso de afuera Se mete en el algoritmo de hash Se ampla al tamao de bloque de la entrada del hash Se le pega una subclave A los dos bloques se los hashea nuevamente (El resultado de este es la salida del HMAC).

CMAC SP800-38B. Esta basado en el cifrador en modo CBC con un vector de inicializacion igual a 0 y una K1 que es una subclave de la que se utilizo en los CIPHk). La salida es el ultimo bloque de cifrado (Recordar que para MAC no existe descifrado, solo comparamos el valor MAC que nos llego con el mismo que calculamos nosotros de nuestro lado!). Se recomienda no procesar con la misma clave ms de 248 mensajes bajo AES y 221 mensajes bajo TDEA.

Mensaje con cantidad entera de bloques

Mensaje con necesidad de relleno

El mac no se puede emplear para dar confidencialidad porque no son reversibles. (pero los bits que se obtienen son representativos de lo que entro y la clave) Se puede dar confidencialidad al mensaje y al resultado del mensaje ya cifrado se le calcula el MAC. Se usan las (b) o (c) dependiendo de las ventajas y desventajas de cada uno. El (c) es mas eficiente en el caso que haya un problema de autenticidad la comparacion da mal y nos evitamos de hacer el descifrado. Por otro lado el (c) tiene como desventaja que lo que se autentica ya esta cifrado y en algunas situaciones podria resultar peligroso autenticar algo que no se puede leer. Autenticacion de A frente a B usando MAC Es un intercambio del tipo desafio respuesta. A se quiere autenticar frente a B. Para esto B le hace un desafio, le tiro unos bits para que calcule el M A lo hace, lo manda y B hace la verificacin (hace la misma cuenta que hizo B con los mismo elementos) BA : M AB: Ck (M)

No es bueno que alguien calcule un MAC que totalmente propone otro (Porque ese otro podra ser un atacante y podra ser usado para un ataque del tipo criptoanalitico). En otras palabras no conviene que el argumento este totalmente definido por el otro. Para Evitar esto A le agrega algo propio, el tema es que B no lo conoce, entonces se lo manda por afuera. AB: Ck (M ||N), N S-KEY OTP Protocol Este protocolo es one time password permite que A se autentique frente a B y emplea solamente una funcin de hash H(x). En la instancia n-esima genrica del protocolo: En A: 1. Se calcula recursivamente xi=H(xi-1) a. I=1,2,3,...,n (El valor de n se calulo em El paso 3 de La anterior instancia Del protocolo para estos usurios) b. X0 es un secreto que solo A conoce (El mismo em todas ls instancias del protocolo para estos usurios) c. Se denomina X al resultado final de la recursin, o sea Xn 2. Se enva X a B En B: 1. Al recibir X se recupera Y (almacenado en el paso 3 de la anterior instancia exitosa del protocolo para estos usuarios) 2. Se hace cierta verificacin entre X recibido e Y almacenado. 3. Si esta verificacin es positiva. a. Se almacena X como nuevo valor de Y b. La autenticacin de A frente a B se declara exitosa para esta instancia del protocolo. No considerar las particularidades de las instancias inicial (n alto) y final (n bajo) ni la forma de distinguir diferentes usuarios; no preocuparse por la posible prdida de sincronizacin entre A y B ni por los tamaos de mensajes y bloques. Se requiere: 1. Explicar en que consiste la verificacin (paso 2 en B) 2. Explicar que propiedad de H(x) permite que se envie X como texto llano sin prdida de seguridad (paso2 en A). Es tener el hash y un valor, si mandamos el hash primero no estamos revelando nada. 1) Axi=H(xi-1) i=1,2,.,n;X=xn; n= n-1 BX vs Y ; Y=X; H(x)==Y

2) La resistencia a preimagen ni segunda imagen, el hecho de que un atacante no pueda mandar un X tal que su hash de lo que se haba mandado ayer.

CRIPTOGRAFIA ASIMETRICA
Se utilizan 2 claves: PRIVADA, que no se comunica a la otra parte, PUBLICA que conocen ambos extremos. Es computacionalmente imposible obtener una a partir de la otra. La distribucion de claves no requiere confidencialidad pero si AUTENTICACION para evitar ataques de personificacion. Son algoritmos muy lentos que se basan en operaciones matematicamente complejas (multiplicaciones, potenciaciones,etc.). PROVEE: CONFIDENCIALIDAD, AUTENTICACION Y FIRMA DIGITAL, INTEGRIDAD Nomenclatura: Kua = u significa pUblica, a es el dueo de la clave Kra = r significa pRivada, a es el dueo de la clave

CONFIDENCIALIDAD:

Encripto con la clave publica del destinatario, por lo cual solo este puede desencriptar con su clave privada.

AUTENTICACION (firma digital, brinda integridad, no repudio y no es reutilizable):

Encripto con mi clave privada, por lo cual cualquiera puede desencriptar con mi clave publica. CONFIDENCIALIDAD + AUTENTICACION:

Se recomienta autenticar primero para poder autenticar algo que conozco. Pero a su vez hay un problema de performance, ya que luego tendre que desencriptar la confidencialidad para poder autenticar (si el mensaje no es autentico voy a estar realizando un proceso innecesario). A su vez, las claves publicas tambien tienen que estar autenticadas, ya que de otro modo se facilitan los ataques de personificacion (tanto en la confidencialidad personificando al destinatario, como en la autenticacion personificando al remitente). Para autenticar las claves publicas se utilizan los certificados. Para evitar tener que encriptar y desencriptar todo el mensaje, se utiliza un algoritmo hibrido llamado SOBRE DIGITAL: se encripta el mensaje con una clave simetrica K y se transmite el mensaje encriptado junto a la clave simetrica encriptada con una clave asimetrica.

FIRMA DIGITAL CON APENDICE(apndice = hash cifrado): Sin confidencialidad

Con confidencialidad:

CONFIDENCIALIDAD + SOBRE DIGITAL + FIRMA CON APENDICE

ALGORITMO RSA Asimetrico cifrador de bloques. Emplea expresiones exponenciales en aritmetica modular. Su seguridad radica en la extrema dificultad (conjeturada) de descomponer un numero muy grande en sus factores primos. Actualmente se recomiendan claves de 1500bits (450 digitos decimales aprox.)

Generacion de claves: 1. 2. 3. 4. Seleccionar dos nmeros primos p y q de aproximada-mente el mismo tamao. Calcular el mdulo pblico n = p x q (individual Calcular f = (p 1) x (q 1). Descartar p y q. Elegir el exponente pblico e (puede ser comn) tal que sea primo relativo de f. La clave pblica es el par {n, e}.
Primos relativos: no tienen factores primos comunes; su maximo comun divisor es 1. Ej.: 8 y 15.

5. Calcular el exponente privado (individual) d tal que sea (d x e) (mod f) = 1. Descartar f. La clave privada es el par {n, d}. Cifrado y descifrado: 1. Para cifrar un texto llano, fragmentarlo en bloques de k bits, con 2k <= n < 2k+1. Cada bloque M se interpretar como un nmero binario menor que n, y se procesar independientemente. 2. Para cifrar un bloque M, dndole confidencialidad, calcular C = Me (mod n) 3. Para descifrar un bloque, calcular Cd (mod n) = M 4. Finalmente, concatenar los bloques. Ejemplo: p=61 1 n primo Privado q=53 2 n primo Privado n=p*q=3233 producto p*q e=17 exponente Pblico d=2753 exponente Privado La clave pblica (e, n). La clave privada es d. La funcin de cifrado es: encrypt(m) = me(mod n) = m17(mod 3233) Donde m es el texto sin cifrar. La funcin de descifrado es: decrypt(c) = cd(mod n) = c2753(mod 3233) Donde c es el texto cifrado. Para cifrar el valor del texto sin cifrar 123, nosotros calculamos: encrypt(123) = 12317(mod 3233) = 855 Para descifrar el valor del texto cifrado, nosotros calculamos: decrypt(855) = 8552753(mod 3233) = 123 Propiedad til de la aritmtica modular: (a x b) mod n = [ (a mod n) x (b mod n) ] mod n

ALGORITMO DIFFIE-HELLMAN Para acuerdo de clave secreta con clave publica y privada. El par de claves puede reutilizarse o ser efimero. Ambos participantes obtienen el mismo numero, intercambiando solamente claves publicas. Su seguridad radica en la extrema dificultad (conjeturada) de calcular logaritmos discretos en un campo finito A UTILIZA => Kua + Kra + Kub B UTILIZA => Kub + Krb + Kua 1. Seleccionar un nmero primo grande q (pblico, global). 2. Seleccionar g pequeo que sea raz primitiva de q (pblico, global). q y g determinan el grupo.
Raz primitiva: g (mod q), g2 (mod q), ... gq-1 (mod q) son todos los nmeros entre 1 y q-1 (sin orden).

3. El participante A elige XA < q (clave privada). 4. El mismo calcula YA = gXA (mod q) (clave pblica). 5. Del mismo modo y en forma independiente, el participante B elige XB y calcula YB. A calcula K = YBXA (mod q) y B calcula K' = YAXB (mod q). Se demuestra que K = K' Ejemplo: A y B acuerdan usar el nmero primo q=23 y la base g=5. A elige un nmero secreto XA=6, luego enva a B : YA YA = (ga mod q) = 56 mod 23 = 8. B elige un nmero secreto XB=15, luego enva a A : YB YB = (gb mod q) = 515 mod 23 = 19. A calcula YBXA mod q = 196 mod 23 = 2. B calcula YAXB mod q = 815 mod 23 = 2. K=2 sera la clave compartida PKCS#1 (RSA)

El relleno aparece para evitar que se puedan construir tablas de equivalencia en casos de mensajes muy cortos.

DISTRIBUCION DE CLAVE PUBLICA

Los casos en donde cada entidad distribuye sus claves publicas o en donde existe un servidor centralizado que contiene todas las claves publicas son vulnerables a la personificacion. Luego, se utilizan certificados de clave publica. Este contiene la clave publica de un sujeto que demostro conocer la clave privada correspondiente, asociandola a los datos identificatorios de este y estableciendo un periodo de validez. Este certificado a su vez tiene que estar firmado por una autoridad certificante CA (los CA pueden delegar responsabilidades a autoridades de registro RA) en la cual el usuario tiene que confiar y conocer en forma segura, mediante otro certificado valido, la clave publica de dicho CA. Para la autoridad mayor, el certificado utilizado para autenticarse es un certificado autofirmado, los cuales tienen que ser obtenidos por un medio seguro (por lo general vienen incluidos en paquetes de software en los cuales se confia). Tener un certificado no sirve para nada si no se verifica que su dueo es quien dice ser! El conjunto de entes (CA) y normativas constituyen una Infraesctrutura de Clave Publica PKI.

Formato del certificado (X.509 V3): NOMBRE DEL SUJETO y PUBLIC KEY son los principales ENCRYPTED es donde esta el hash cifrado y es lo que propiamente hay que verificar VALIDEZ: una clave privada puede tener una duracion diferente a la clave publica. Si vence la privada, el certificado tiene que permitirme descifrar firmas viejas. EMISOR y SUJETO contienen nombres distinguidos, que tienen estructuras propias.

Extensiones: pueden ser criticas o basicas. Las criticas NO pueden ser ignoradas. Ej.: identificacion de claves de emisor y sujeto, retricciones al uso de la clave del sujeto, nombres alternativos, restricciones a la longitud de la ruta de certificacion... Jerarquia en X.509: se muestra un arbol de jerarquias, desde el ente superior a los dinstintos CA y RA que emiten los diferentes certificados

Revocacion de certificados:Puede ser offline, mediante una lista que se descarga periodicamente, o puede ser online, conectandose a un servidor en tiempo real.

Aplicaciones tipicas:IPSEC, SSL/TLS, S/MIME

Autenticacion y distribucion de Claves


Un protocolo es una secuencia de pasos con un objetivo definido, en la que intervienen 2 o mas partes y se formular para formalizar comportamientos e independizarlos de los mecanismos concretos.

Un protocolo es: COMPLETO (una accion especifica para cada situacion posible), NO AMBIGO (cada paso tiene que estar bien definido, para evitar problemas de interoperabilidad entre diferentes desarrollos), CONOCIDO (por todos los participantes), OBLIGATORIO (no tiene que permitirse lograr el objetivo sin usar el protocolo) e IMPOSIBLE CONOCER O HACER MAS DE LO ESPECIFICADO Distribucion: Descentralizada: cada uno envia las claves. Entre N corresponsales pueden formar N*(N1)/2 pares; cada par necesita una clave diverente. No es escalable Centralizado: mas abierto a ataques, un tercero desinteresado y confiable llamado centro distribuidor de claves KDC o un servidor de autentificacion AS. Cada corresponsal comparte una clave secreta con el AS, posibilitando un canal seguro.

Clave de sesion: se genera y distribuye cada vez que un corresponsar requiere comunicarse. Su vigencia es breve para dificultar el criptoanlisis, pero teniendo en cuenta que la generacion y distribucion produce sobrecarga. Luego, su duracion y longitud estan relacionadas. Perfect Forward Secrecy PFS: (opcional) rige cuando la obtencion de una clave permite al atacante acceder solamente a los datos protegidos por esa clave. La clave usada para proteger la transmision no se debe usar para derivar claves adicionales, y si dicha clave se derivo de otro material, ese material no se puede usar para derivar otras claves. Protocolo de Needham y Schroeder Se requiere un 3ro confiable KDC a quien se busca no sobrecargar. KDC tiene claves secretas compartidas solo con uno de los extremos. Se usa para: comunicacion interactiva autenticada, comunicacion unidireccional autenticada, firma digital. Emplea clave simetrica y asimetrica. SOLO En este caso AC = KDC

1. A>AS: IA,IB,N1 IA es el identificador propio, IB es el id del corresponsal deseado. AS busca las claves secretas KA y KB que comparte con cada uno y genera una clave de sesion KS unica. N1 es un numero aleatorio que se usa para identificar que el mensaje siguiente no sea un replay de un mensaje viejo. Luego, genera un ticket para B indicandole que A desea cominucarse Ekb(KS,IA,T) *(Propuesta de Denning)Se agrega tanto en el ticket como en el mensaje de respuesta un timestamp para evitar que un atacante pueda utilizar algun KS antiguo para personificar a A. ESTO REQUIERE UNA ESTRICTA SINCRONIZACION DE LOS RELOJES, QUE SE TIENE QUE HACER DE FORMA SEGURA PARA EVITAR ATAQUES SOBRE EL USO DE T. Tambien tiene que existir alguna politica de seguridad que determine cuando un mensaje es viejo. 2. AS>A: Eka(T,IB,KS,N1,Ekb(KS,IA,T)) AS le envia a A el ticket y la clave de sesion, junto al N1 que le envio A para reconocer que es un mensaje reciente y el identificador del destinatario IB encriptado, por si en el mensaje 1 alguien substituyo ese identificador por otro (recordar que el mensaje 1 no se encripta). (Cambiar IA no tiene sentido ya que esta encriptado en el ticket por lo que A no podria desencriptarlo). A recupera IB y lo compara, recupera N1 y lo compara. Si coinciden, le envia el tiquet a B 3. A>B: Ekb(KS,IA,T) B descifra el tiquet y recupera KS e IA, almacenandolos para saber que A se comunicara con l usando KS (clave secreta compartida entre A y B, que dara confidencialidad y autenticidad a los mensajes)

4. B>A:Eks(N2) B le responde a A que recibio el ticket. Pero como el mensaje 3 podria ser un replay donde un atacante intenta personificar a A y reutilizar una KS, B le responde a A un numero aleatorio N2. Solamente A puede descifrar el mensaje 4 y recuperar N2 (recordar que un atacante puede hacer un replay de un ticket, pero se supone que no conoce la KS que esta dentro). 5. A>B: Eks(N2 - 1) A recibe el mensaje, usa KS para descifrarlo, transforma N2 (en este caso le resta 1, pero puede ser cualquier transformacion acordada) y se lo vuelve a enviar a B para autenticarse con este. No se devuelve N2 directamente porque sino el mensaje resultante seria igual al anterior. Hay una variante que permite reutilizar un mismo KS varias veces. 3. A>B: Ekb(KS,IA),Eks(N3) Se genera un nonce3 que se le envia a B para que este se autentifique con A. 4. B>A:Eks(N3-1,N2) B le devuelve el N3 transformado, autenticandose de esa forma con A, y el N2 correspondiente a dicho paso para que A haga lo mismo segun el procedimiento normal. Para cada vez que se reuse KS, A y B tienen que autenticarse mutuamente repitiendo los pasos 3,4 y 5 con diferentes N2 y N3. No es necesario volver a usar los mensajes 1 y 2 cada vez porque la Ks se esta reutilizando. *Ataques de personificacion si no se utilizara el timestamp: como C conoce una Ks antigua, genera un mensaje 3 y se lo envia a B, interceptando el mensaje 4 y descifrandolo (ahora puede hacerlo porque conoce KS) y generando de esa forma un mensaje 5 valido para autenticarse con B. LA IDEA DEL REPLAY es anular los beneficios de las claves variables.Teniendo muchos mensajes cifrados con la misma clave es mas facil realizar el criptoanalisis. Si alguna de las respuestas de autenticacion no fuese correcta, se cancela toda la operacion!!

KERBEROS
Es un protocolo de autenticacion, basado en el protocolo de Needham y Schroeder, para redes inseguras en donde los usuarios A (usuarios kerberizados) se autentican contra servidores B (de los cuales se ejecutan los servicios kerberizados) y trabaja en la capa de aplicacion del modelo OSI. Requiere de un tercero confiable KDC y tambien puede proporcionar integridad y confidencialidad. Cada servidor Kerberos y sus principales conforman un realm (dominio administrativo de seguridad). Los principales pueden autenticarse aunque esten entre dominios diferentes, solo si los dominios confian entre si. Requerimientos: SEGURO: la autenticacion no debe ser vulnerable si el servidor Kerberos es seguro TRANSPARENTE: no se debe notar la accion del servicio ESCALABLE: debe soportar el crecimiento de servidores y usuarios

Se supone que la red esta sometida a ataques (tanto pasivos como activos) y que los principales mantienen sus claves en secreto. Los relojes de los principales estan razonablemente sincronizados (+-5min de tolerancia) de forma segura. Ejemplos de sintaxis: -alicia@EXAMPLE.com es un usuario -hostmulti.example.com@EXAMPLE.COM es un servicio en multi.example.com -krbtg/SAMPLE.COM@EXAMPLE.COM es un ticket que sera presentado en el dominio SAMPLE.COM Componentes logicos: AS (servidor de autenticacion) y TGS (servidor de otorgamiento de tickets) Funcionamiento: 1. Una vez por logon de usuario (pasos 1,2,3), este le solicita al AS credeciales y este le devuelve un TGT (ticket granting ticket) , el cual sera descifrado usando la contrasea del usuario, para presentar ante el TGS. 2. Para cada servicio(pasos 3,4) el cliente le presenta su TGT al TGS, este verifica la autenticidad y le entrega un SGT (service granting ticket) que contiene las credenciales para poder comunicarse con los servidores kerberizados 3. Para cada llamada a un servicio (pasos 5,6), el cliente presenta el SGT y un autenticador NO REUSABLE (tambien puede proponer una subclave de sesion no reusable), el servidor verifica la autenticidad. Opcionalmente se puede autenticar frente al cliente (autenticacion mutua...recordar que el cliente es quien se esta autenticando contra el servidor)

1. A>AS:Ia,Itgs,N1 (KRB_AS_REQ) Utiliza los identificadores de origen y destino y un numero nonce para que el servidor lo devuelva encriptado. 2. AS>A:Ia,Eka(Ka-tgs,X1,N1,Itgs),TGTa-tgs (KRB_AS_REP) X1 es el tiempo de expiracion del TGT. TGTa-tgs es el ticket granting ticket para que A se comunique con el TGS. TGTa-tgs = Ektgs(Ka-tgs,Ia,Ra,X1). Ra es la # de red de A (dado que la sesion caduca si el usuario cambia de # de red) Ka es la clave secreta compartida entre A y AS (el password que ingresa el usuario). Ka-tgs es la clave de sesion para que A se comunique con TGS. Ka-tgs es generada de forma aleatoria usando Ka (clave compartida entre A y AS, obtenida a partir de Ia) y Ktgs (clave compartida entre AS y TGS, obtenida a partir de Itgs). N1 es el mismo que le envio A, solo que ahora vuelve encriptado para que A lo desencripte y luego lo compare para evitar mensajes replay. 3. A>TGS:Ib,N2,TGTa-tgs,Aa-tgs (KRB_TGS_REQ) Aa-tgs es el autenticador de A para TGS que A construye usando la Eka-tgs enviada por AS Aa-tgs = Eka-tgs(Ia,T1)

4.

5.

6.

7.

T1 es el timestamp del autenticador, para evitar replays. Aparece recien ahora porque los TGT son reutilizables N2 es otro nonce para evitar replays Ib es el identificador del servidor kerberizado a utilizar TGS>A:Ia,Eka-tgs(Ka-b,X2,N2,Ib),SGTa-b (KRB_TGS_REP) Para obtener Ka-tgs el TGS tiene primero que descifrar TGTa-tgs y verificar que el ticket todavia sea vigente controlando X1 (no tiene que diferir en 5 minutos de la hora actual y que el autenticador no se haya repetido en los ultimos 10 minutos) SGTa-b es el ticket para que A y solo A pueda comunicarse con B. Solo B puede descifrarlo SGTa-b = Ekb(Ka-b,Ia,Ra,X2) Kb es la clave secreta compartida entreTGS y B Ka-b es una clave de sesion entre A y B construida a partir de Kb (clave compartida entre TGS y B, obtenida mediante Ib ). X2 es el tiempo de expiracion del SGTa-b A>B:SGTa-b,Aa-b (KRB_AP_REQ) Aa-b es el autentificador de A para B que A construye a partir de la Ka-b desencriptada con la clave de sesion entre A y TGS. Aa-b = Eka-b(Ia,T2,Ks) Ks es una subclave de sesion opcional, diferente para cada instancia de este mensaje. T2 es el timestamps del autenticador B>A:Eka-b(T2) (KRB_AP_REP) B descifra SGTa-b y obtiene la Ka-b, verificando tambien la vigencia del ticket usando X2. A ya esta autenticado con B y ambos comparten Ka-b Opcionalmente B puede autenticarse con A utilizando Ks, con lo cual tambien quedaria como clave compartida entre A y B B le contesta a A con el mismo timestamp que este le envio A<>B (KRB-SAFE) Para integridad, hash conclave. Opcional A<>B (KRB_PRIV) Para confidencialidad. Opcional

Propiedades (opcionales) de los tickets: PREAUTENTICADO: para dificultar el ataque tipo diccionario a la contrasea, KRB_AS_REQ lleva un hash de la clave y del nombre de usuario. De esta forma se evita que un atacante genere mensajes 1 validos y obtenga cosas cifradas con Ka para realizar criptoanalisis RENOVABLE: se puede usar para obtener otro ticket que expire mas tarde POSTDATADO: este tipo de ticket tiene validez a prtir de una fecha futura especificada DELEGABLE: para que un servicio actue en nombre de un usuario (proxy, fowarding)

Si A y B estan en realms diferentes, ambos dominios tienen que conocerse y confiar mutuamente. Ambos TGS tienen que tener una clave compartida para que A reciba un ticket para que pueda autenticarse frente al TGS del otro dominio

CMS-MIME-S/MIME
CMS ( Cryptographic Message Sintax) RFC 3852. Se aplica para firmar digitalmente, obtener el hash, autenticar o cifrar mensajes de contenido arbitrario. Describe la sintaxis de encapsulamiento, permite encapsulamientos anidados, permite asociar a la firma atributos arbitrarios (ej: fecha) y los valores se generan mediante codificacion BER (basic encoding rules) de ASN.1 (abstract syntax notation one). Tipos de contenido definidos(* son mandatorios): * DATA: lo que se quiere procesar *SIGNED-DATA: consiste en un contenido de cualquier tipo y cualquier valor de firma. Puede ser firmado en paralelo por cualquier cantidad de firmantes, donde cada uno puede especificar hash y/o firma a utilizar. Se usa para distribuir certificados, CRLs (lista revocacion certificados) o para firma digital de un firmante sobre el contenido DATA. Basicamente, es la firma del hasg del documento. *ENVELOPED-DATA: es el contenido cifrado de cualquier tipo y claves de cifrado cifradas para uno o mas destinatarios. Se usa un solo algoritmo para dar confidencialidad a todos

los destinatarios, pero las claves si pueden cifrarse para cada uno de ellos. Se suele usar para envolver el contenido de DATa o de SIGNED-DATA. Proceso de generacion: o Se genera una clave aleatoria para un algoritmo especifico o Se cifra la clave para cada destinatarios mediante alguna de estas tecnicas: transporte de clave (con la clave publica del destinatario), acuerdo de clave (con una clave simetrica generada a partir de la Ku del destinatario y la Kr del remitente), clave simetrica (previamente distribuida), contrasea (clave simetrica derivada de un secreto compartido). o Se agrupa el contenido cifrado, las claves y la info adicional Proceso de descifrado: cada destinatario descifra la clave aleatoria de cifrado con la tecnica y clave que corresponda. DIGESTED-DATA: consiste en el contenido de cualquier tipo y un hash de ese contenido. Se emplea para proveer integridad y suele pasar a ser entrada de enveloped-data ENCRYPTED-DATA: consiste en el contenido cifrado de cualquier tipo, sin clave de cifrado ni especificacion de destinatario. La clave tendra que ser proveida por medios externos y se emplea tipicamente para cifrar el contenido para su almacenamiento local, posiblemente derivando la clave a partir de una contrasea AUTHENTICATED-DATA: consiste en el contenido de cualquier tipo, un codico MAC para autenticar el mesnaje y las claves de autenticacion cifradas para uno o mas destinatarios . Proceso de Generacion o Se genera una clave de autenticacion aleatoria para un algoritmo especifico o Se cifra la clave para cada destinatario usando las tecnicas especificadas en enveloped-data. o Se calcula el MAc del contenido (incluyendo atributos cuando corresponda) aplicando la clave aleatoria o Se agrupan el MAC, las claves cifradas y la info especifica de cada destinatario, los certificados, CRLs y el contenido (todo es opcional, depende de lo que se especifique)

Proceso de Verificacion: cada destinatario descifra la clave aleatoria de autenticacion con la tecnica y claves correspondientes y con ello recalcula el MAC para compararlo con el enviado MIME (Multipurpose Internet Mail Extensions) Dado que la especificacion de email (RFC 821 y 822) solo admite caracteres US-ASCII (7 bits) y lineas de texto sin formato hasta 1000 caracteres, se redefine el formato para permitir otros caracteres en la cabecera y en el cuerpo, un conjunto extensible de formatos para el cuerpo y cuerpos con multiples partes.

Se introducen 3 cabeceras adicionales: CONTENT-TRANSFER-ENCODING (codificacion): para permitir combinacions de bits diferentes del US-ASCII de 7bits y lineas de longitud arbitraria CONTENT-TYPE (tipo/subtipo y params): para describir los datos de modo que el agente receptor pueda seleccionar el mecanismo apropiado para mostrarlo al usuario. Formato: tipo/subtipo;nombre=valor;nombre=valor... tipo/subtipo son obligatorios (ej: text, audio,application), los parametros dependen de cada tipo/subtipo. Todo salvo los valores es case insensitive. Los tipos mas importantes son multipart (ej: mixed, parallel...), que permite que el cuerpo contenga varias partes separadas por un delimitador y cada una puede tener su propia cabecera MIME y message (rfc822,partial...), que requieren procesamiento adicional. CONTENT-DISPOSITION (inline o attachment y filename)

S/MIME (Secure MIME) Provee una forma consistente de enviar y recibir datos MIME seguros. Se puede emplear en los mail user agents (MUAs) para agregar servicios de seguridad al email y con cualquier otro transporte que utilice MIME (ej: http) Servicios que brinda: AUTENTICACION, FIRMA DIGITAL (integridad del mensaje y no repudio) y CONFIDENCIALIDAD.

1)Tipo APPLICATION: tiene el documento a firmar en una unica parte, dentro del CMS. Si quien recibe el mail no entiende ese MIME no puede entrar al CMs y leer el contenido 2)Tipo MULTIPART: el mensaje esta como una parte mime y solo la firma con CMS, de esa forma el que recibe puede leer el mail por mas que no entienda el CMS (se pierda la confidencialidad, y quien no entienda el MIME tampoco tendra firma ni autenticacion)