En este segmento, vamos a construir sistemas de cifrado autenticado. A partir de haber conseguido cifrado seguro CPA y tener MACs seguros, la pregunta obvia es si podemos combinar los dos de alguna manera, a fin de obtener cifrado autenticado. Y eso es exactamente lo que vamos a hacer en este segmento. El cifrado autenticado fue introducido en el año 2000, en dos informes independientes que indicaré al final de este módulo. Antes de eso, muchas librerías criptográficas proporcionaban una API que, por separado, admitían cifrado seguro CPA, y MACing. Así que había una función para implementar el cifrado seguro CPA, por ejemplo, CBC con IV aleatorio, y otra función para implementar MAC. Y a continuación, cada desarrollador que quería implementar el cifrado, tenía que llamar por separado al esquema de cifrado CPA y al esquema de MAC. En concreto, cada desarrollador tuvo que inventar su propio modo de combinar MAC-ing y cifrado para proporcionar algún tipo de cifrado autenticado. Pero los objetivos de la combinación de cifrado y MAC-ing no fueron bien entendidos ya que el cifrado autenticado no había sido definido aún. No estaba muy claro qué combinaciones de cifrado y MAC-ing eran correctos y cuales no. Y como dije, cada proyecto tuvo que inventar su propia combinación. Y de hecho, no todas las combinaciones eran correctas. Y les puedo decir ya que el error más común en proyectos software fue básicamente combinar incorrectamente los mecanismos de cifrado e integridad. Así que esperemos que, al final de este módulo, usted sepa cómo combinarlos correctamente y no cometer estos errores. Analicemos algunas combinaciones de cifrado seguro CPA y MAC, que fueron introducidas por los diferentes proyectos. Aquí hay tres ejemplos. En primer lugar, en los tres ejemplos hay una clave independiente para el cifrado, y otra clave independiente para integridad. Estas dos claves son independientes una de otra, y ambas se generan en tiempo de instalación de la sesión. Y vamos a ver cómo generar estas dos claves más adelante en el curso. El primer ejemplo es el protocolo SSL. El modo en que SSL combina cifrado y MAC con la esperanza de lograr cifrado autenticado es la siguiente. Básicamente toma el texto plano m, y luego calcula el MAC de ese texto plano m. De esta forma, se usa la clave MAC Ki, para calcular la etiqueta de este mensaje m. Y, a continuación, se anexa la etiqueta al mensaje y se cifra la combinación de mensaje y etiqueta, obteniendo el texto cifrado final. Esta es la opción número uno. La segunda opción es lo que hace IPsec. Aquí, tomamos el mensaje, y lo primero que se hace es cifrar el mensaje. Y, a continuación, calcular una etiqueta a partir del texto cifrado resultante. Obsérvese que la etiqueta se calcula sobre el texto cifrado resultante. Una tercera opción es lo que hace el protocolo SSH. Aquí, el SSH toma el mensaje y lo cifra utilizando un esquema de cifrado seguro CPA. Y a continuación se agrega una etiqueta al mensaje. La diferencia entre IPsec y SSH, es que en IPsec la etiqueta es calculada a partir del texto cifrado, mientras que en SSH la etiqueta se calcula a partir del mensaje. Por tanto, estas son tres formas completamente diferentes de combinar cifrado y MAC. Y la cuestión es cual de ellos es seguro. Por tanto, le permitiré pensar en esto un segundo y luego seguiremos y juntos haremos el análisis. Muy bien. Vamos a comenzar con el método SSH. En el método SSH observará que la etiqueta se calcula en el mensaje y, a continuación se concatena en claro en el texto cifrado. Esto es realmente un problema porque MAC por sí mismo no está diseñado para proporcionar confidencialidad. MAC sólo está diseñado para integridad. Y de hecho, no hay [...no revisado a partir de aquí..] nada malo con un Mac que como parte de la etiqueta genera unos trozos de la llanura texto. Salidas de unos bits del mensaje M. Eso sería una etiqueta perfectamente bien. Y si hicimos que rompería completamente seguridad CPA aquí, porque algunos bits de el mensaje se filtró en el texto cifrado. Y así el SSH enfoque, aunque el características de SSH son finos y el periódico propio no se vea comprometido por Esta combinación específica, generalmente es recomendable no utilizar este enfoque. Simplemente debido a la salida de la max firma de ritmo posible fuga bits del mensaje. Por lo tanto Ahora analicemos SSL y IBSEC. Según parece, el método recomendado en realidad es el método IBSEC. Porque resulta que no importa qué sistema seguro de CPA y mac clave que se utiliza la combinación siempre es va a proporcionar encriptación autenticada. Permítanme explicar muy brevemente por qué. Básicamente lo que sucede es que una vez que ciframos el mensaje bien el mensaje de contenido ahora está oculto dentro del texto de cypher y ahora cuando nos calcular una etiqueta de texto cypher básicamente nos estamos bloqueo, los bloqueos de esta etiqueta el texto de cypher y hace que nadie puede producir un texto de cypher diferentes que aspecto válido. Y como resultado este enfoque asegura que cualquier modificación a la Cypher texto será detectado por el decrypter simplemente porque no la mac va a comprobar. Pues resulta que, por el enfoque SSL, realmente hay tipo de ejemplos patológicos, donde se combina CPA sistema de cifrado seguro con un seguro MAC. Y el resultado es vulnerable a un ataque de texto cifrado elegido, por lo que lo hace en realidad no proporcionan cifrado autenticado. Básicamente, la razón y que podría suceder, es que hay algún tipo de una mala interacción entre el cifrado esquema y el algoritmo de MAC. Tal que, de hecho, habrá un cifrado elegido ataque de texto. Así que si va a diseñar un nuevo proyecto ahora la recomendación es siempre uso entonces cifrar Mac debido a que es seguro no importa qué CPA segura cifrado y el algoritmo seguro de Mac que está combinando. Ahora, sólo para establecer la terminología, el método SSL se denomina Mac. Y, a continuación, cifrar. Y el Se llama al método de IP-SEC cifrar luego Mac El método [inaudible] a pesar de su no supone que para usarlo, se llama cifrar y Mac. Muy bien, por lo que a menudo va a: cifrar y MAC y MAC y cifrar para diferenciar SSL y IP sec. Okay, tan sólo para repetir lo que he de acaba. El método [inaudible] ip cifrar siempre en mac nos proporcionan un cifrado indicado. Si inicia desde [inaudible] y un mac seguro. Siempre obtendrá cifrado autenticado. Como dije, [inaudible] en hecho, hay casos patológicos donde el resultado es vulnerable a hechos de ECP y por lo tanto no proporciona cifrado autenticado. Sin embargo, la historia s un poco poco más interesante que eso, que resulta que, si realmente está utilizando aleatorios a modo de contador o CBC aleatorio, entonces resulta que, para los particulares Esquemas de cifrado seguro de CPA, [inaudible] realmente proporcionar autenticado cifrado y por lo tanto es seguro. De hecho, hay incluso una más interesante Twist aquí que si utiliza el modo contador aleatorios. Entonces, es suficiente que el algoritmo de Mac solo una vez segura. No tiene que ser un completo Mac seguro. Sólo tiene que ser seguro cuando se utiliza una clave para cifrar un mensaje único, ¿bien? Y cuando hablamos de la integridad del mensaje, vimos que hay realmente Macs mucho más rápidos que una vez seguro que Macs que son totalmente seguras. Como un resultado, si está utilizando el modo de contador aleatorios MAC cifrar podría realmente como resultado de un mecanismo de cifrado más eficaz. Sin embargo, voy a repetir Esto otra vez. La recomendación es utilizar cifrar entonces MAC y nos vamos a ver un número de ataques a sistemas que no utilizan entonces cifrar Mac Y así hacer seguro cosas son seguras sin tener que pensar demasiado sobre ello. Una vez más, estoy va a recomienda que siempre utilice luego cifrar Mac Ahora, una vez el concepto de cifrado autenticado se hizo más popular, estandarizado de un número de criterios para la combinación de cifrado y Mac activado. Y esos fueron incluso estandarizado por el Instituto Nacional de estándares. Por lo que sólo me va a mencionar tres de estas normas. Dos de ellos fueron estandarizados por el NIST. Y estos son llamado Galois modo de contador y contador CBC. Y así que Permítanme explicar lo que hacen. Modo de contador de Galois básicamente utiliza cifrado de modo de contador, por lo tanto un contador aleatorio modo con una MAC Carter-Wagmon, por lo que un hecho Carter Wagmon Mac. Y la forma del Carter Wagmon MAC funciona en GCM es básicamente es una función de hash del mensaje está siendo MACed. Y, a continuación, el resultado se encriptan usando un PRF. Ahora esta hash función de GCM ya es bastante rápido hasta el punto donde el grueso de la marcha tiempo de GCM está dominada por el cifrado de modo de contador y incluso hizo más en Intel introduce una instrucción especial PCLMULQDQ específicamente diseñado para el propósito de hacer la función de hash en ejecución GCM tan rápido como posible. Ahora CCM Com módem es otra perdida estándar utiliza un Mac de CBC. Y a continuación, cifrado de modo de contador. Así que este mecanismo, usted sabe, esto utiliza MAC, entonces cifrar, como SSL. Así que esto realmente no es la manera recomendada de hacerlo las cosas, pero contador [inaudible] se utiliza el cifrado de modo. Esto es realmente un mecanismo de cifrado perfectamente bien. Una cosa que me gustaría señalar sobre MCC, es que todo se basa en AES. Observará que está usando AES para el CBC MAC y lo está usando AES para el cifrado de modo de contador. Y como resultado, puede CCM aplicarse con relativamente poco código. ?Hacer todo lo que necesita es un motor AES y nada más. Debido a esto, CCM realmente fue aprobado por la Wi-Fi Alianza, y de hecho, probablemente utilizas CCM diariamente si utilizas cifrado Wi-Fi, 80211I. A continuación, utiliza básicamente ccm cifrar el tráfico entre el portátil y el punto de acceso. Hay otro modo llamado un eax que utiliza cifrado de modo de contador y, a continuación, cmac. Por lo tanto, otra vez notará cifrar y mac y eso es una aleta, otro modo fino a utilizar. Haremos una comparación de todos estos modos en tan sólo un minuto. Ahora quisiera mencionar que en primer lugar, todas estas son basado en nonce. En otras palabras, no utilizan ningún aleatoriedad pero tienen como entrada un nonce y el nonce tiene que ser único por clave. En otras palabras, como usted Recuerde que debe repetir nunca, nunca la nonce común clave par. Pero el nonce sí necesitan no ser aleatorio, por lo que es perfectamente bien para utilizar un contador, para ejemplo, como un [inaudible]. Y el otro punto importante es que, en realidad, todos Estos modos son lo que denomina cifrado autenticado con asociados datos. Se trata de una extensión de cifrado autenticado, pero que viene hasta muy a menudo en protocolos de red. Así que la idea entre AEAD. Es que, de hecho, el mensaje siempre es que el modo de cifrado no está pensado para ser plenamente cifrado. Sólo una parte del mensaje pretende ser cifrada, pero todos los mensaje pretende ser autenticado. Un buen ejemplo de esto es un paquete de red. Piensa como un paquete ip donde hay un encabezado. Y, a continuación, hay una carga y normalmente es el encabezado no va a ser codificado. Por ejemplo, podría el encabezado contener el destino del paquete, pero entonces el encabezado había mejor no enrutadores cifrados del camino no saben dónde enrutar el paquete. Y por lo tanto, normalmente se envía el encabezado de la clara, que la carga, por supuesto, es siempre cifrada, pero qué gustaría hacer es tener el encabezado de ser autenticado. No cifrados por autenticado. Esto es exactamente lo que estos modos AEAD, do. Ellos será autenticar el encabezado y, a continuación, cifre la carga. Pero el encabezado y la carga están enlazados juntos en la autenticación para que la autenticación no se puede realmente estar separados. Así que esto no es difícil de hacer. Lo que sucede en estos tres modos de GCM, CCM y EAX, básicamente el MAC se aplica a los datos de todos. Pero el cifrado se aplica solamente a la parte de los datos que necesita ser codificado. Por lo tanto Quería mostrarles lo que un cifrado de API [inaudible] autenticado con asociados parecen esquemas de cifrado de datos. Así que aquí es lo que parece [inaudible]. Por ejemplo, esto es, una API para GCM. Así que lo que haces es llamar a la a mediados de función para inicializar el cifrado modo y le aviso le darle una clave y nonce. El nonce nuevamente, no tiene que ser aleatorio, pero tiene que ser único. Y después de la inicialización, sería llamar a esta función de cifrar, donde ves que da los datos asociados que se va a ser autenticado, pero no cifrada. Se le da los datos, y se va a ser tanto autentica y cifrado. Y le da vuelta el texto cifrado completo, que es un cifrado de la datos, pero por supuesto no incluye la AAD, porque la AAD es va a ser enviado [inaudible]. Así que ahora que comprendemos este modo de cifrar luego MAC, podemos ir volver a la definición de MAC seguridad y podemos explicarle algo que podría han sido un poco oscuro cuando analizamos esa definición. Así que si te acuerdas, uno de los requisitos que siguieron desde nuestra definición de MACs seguros significa que dado un mensaje par MAC en un mensaje M, el atacante no puede producir otra etiqueta en el mismo mensaje M. En otras palabras, aunque el atacante ya tiene una etiqueta para el mensaje M, él shouldn? t ser capaz de producir una nueva etiqueta para el mismo mensaje M. Y realmente no está claro, ¿por qué eso importa? A quién le importa si el adversario ya ¿tiene una etiqueta en el mensaje de M? ¿A quién le importa si él puede producir otra etiqueta? Así, resulta que el MAC no tiene esta propiedad. En otras palabras, dado un mensaje Par de MAC, puede producir otra MAC en el mismo mensaje y, a continuación, sería MAC como resultado un modo inseguro de MAC cifrados. Y por lo tanto, si queremos que nuestro MAC cifrado a integridad self-adjust, es crucial que nuestra seguridad MAC implicaría una fuerte noción de seguridad, que, por supuesto, no es porque hemos definido correctamente. Así que vamos a ver lo que podría salir mal, si, de hecho, era fácil producir este tipo de falsificación. Por lo tanto lo que haremos es te voy a mostrar un ataque de texto cifrado elegido en el resultando cifrar, luego sistema Mac. Y dado que el sistema tiene un texto cifrado elegido ataque, significa necesariamente que no proporciona un autenticado cifrado. Así que vamos a ver. Así que empieza a gonnna del adversario mediante el envío de dos mensajes, M0 y M1. Y él se va a recibir, como de costumbre, el cifrado de una de ellos, el cifrado de M0 o el cifrado de M1. Y ya que estamos uso de cifrar, el Mac, el adversario recibe un texto cifrado llamaremos a una c cero y Mac en el texto cifrado c cero. Pues ahora hemos dicho que el mac de un mensaje el adversario puede producir otro mac en el mismo mensaje. Y qué él es va a hacer es que se va a producir otro mac en el mensaje de CO. Ahora él tiene un nuevo cypher texto, CO, T prime, que es un texto de cypher perfectamente válida. Primo de t es un mac válida de CO. Por lo tanto, el adversario ahora puede enviar una consulta de texto elegido cypher C prime y esto es un texto válido cypher elegido consulta porque es diferente de C. Es un nuevo texto de cifrado. El challenger pobre ahora se ve obligado a descifrar esto primer texto c de cifrado por lo que él va a volver a enviar el descifrado de c prime. Es un el texto cifrado válidos, por tanto, el descifrado de prime c es el mensaje MB pero ahora el atacante sólo aprendió el valor de b porque él puede probar si MB es igual a M0 o MB es igual al M1. Como resultado de él sólo puede salida b y saca ventaja uno. En la alimentación del sistema. Y así otra vez si no implica nuestra seguridad mac Esta propiedad aquí. Entonces, habrá un elegido [inaudible] un cifrar en mac. Y por lo tanto, no sería seguro. Por lo tanto el hecho de que definimos seguridad Mac correctamente significa que cifrar y Mac realmente proporcionan cifrado autenticado. Y a lo largo de todas las Macs que hablamos realmente satisfacer esta noción fuerte de unforgeability. Así, curiosamente, esto no es el final de la historia. Por lo tanto, como dijimos antes de que se introdujo el concepto de cifrado autenticado todos era sólo la combinación de macs y cifrado de diversas maneras con la esperanza de lograr algunos, algunos cifrado autenticado. Después de la noción de cifrado autenticado fue formalizado y rigurosa un poco comenzó arañando sus cabezas y dijo: bueno, espere un minuto. Quizás logremos cifrado autenticado más eficiente que mediante la combinación de un mac y un esquema de cifrado. De hecho, si uno piensa en cómo Esta combinación de MAC y encriptación funciona, digamos que combinamos a modo de contador con CMAC, entonces para cada bloque de texto, en primer lugar tiene que utilizar el cifrado por bloques a modo de contador y, a continuación, tiene que utilizar para el cifrado por bloques una vez más, para el CBC-MAC. Esto significa que si usted combina CPA seguro cifrado con una MAC, para cada bloque de texto, tienes que evaluar dos veces, el cifrado por bloques una vez para MAC y una vez en el esquema de cifrado. Así que la pregunta natural fue, nosotros podemos construir un esquema de cifrado autenticado directamente desde un PRP tal que tendríamos que evaluar sólo el PRP una vez por bloque. Y resulta la respuesta es sí y hay estas hermosa construcción llamada TOC, que muy bonita hace todo lo que desee y es mucho más rápido que las construcciones que son construido por separado a partir de un cifrado y un Mac. Así que escribí abajo, tipo de un esquema de OCD. No quiero explicar en detalle. Sólo un poco a explicarlo en un alto nivel. Así que aquí tenemos a la entrada de texto, aquí en la parte superior. Y usted Observe que, en primer lugar, TOC es paralyzable, completamente paralyzable. Por lo tanto cada bloque puede cifrarse por separado de cada otro bloque. La otra cosa que aviso es que como lo prometido es deuda, sólo evaluar su cifrado en bloque una vez por la llanura bloque de texto. Y, a continuación, se evalúa una vez más al final para construir su ficha autenticación y, a continuación, la sobrecarga de la OCB más allá de sólo una cifra de bloque es mínima. Todo lo que tienes que hacer es evaluar una determinada función muy simple clave que la no [inaudible] en el p observará, la clave entra en esta p y, a continuación, hay una contador de bloque que va en este p. Tan sólo evaluar esta función P, dos veces para cada bloque y el resultado antes y después de utilizar cifrado XOR el cypher de bloque y eso es todo. Eso es todo lo que tienes que hacer y, a continuación, obtendrá una muy rápida y eficiente esquema de cifrado autentica construido a partir de una cifra de bloque. Así OCB realmente tiene un teorema de seguridad agradable asociado y voy a punto un libro sobre OCB cuando lleguemos al final de este módulo donde te enumero algunas más lectura de documentos que pueden echar un vistazo. Por lo que podría estar preguntándose si la OCB es así mucho mejor que todo lo que has visto hasta ahora todas estas tres normas MCC, GCM y EAX ¿por qué no utilizan OCB o por qué no OCB el estándar? Y la respuesta es un poco triste. La CBC de respuesta primaria [inaudible] no está siendo utilizada es realmente porque de varias patentes. Y sólo podrá dejarlo en ese. Para concluir esta sección I quería mostrarle algunos números de rendimiento. Así que aquí a la derecha aparece números de rendimiento de modos que no debería estar utilizando. Así que esto es para modo de contador aleatorios y esto es para CBC aleatorio. Y se puede ver también el rendimiento de CBC MAC es básicamente el mismo que el rendimiento de cifrado CBC. Muy bien. Y aquí están los modos de cifrado autenticado, por lo que estos son los que se supone que utilizando, estos se supone no estar usando en su derecho propio. Estos dos nunca debe utilizar estos dos porque ellos sólo proporcionar seguridad habilitados en la CPA, realmente no proporcionan seguridad contra activo ataques. Sólo se supone utilizar cifrado autenticado para el cifrado. Y así se trata de sus números de rendimiento para las tres normas. Y me permito recordar básicamente lo GCM utiliza un hash muy rápido. Y, a continuación, utiliza el modo de contador para cifrado real. Y se puede ver que es la sobrecarga de GCM a modo de contador relativamente pequeño. CCM y EAX usan un sitio de bloque para una codificación base y una sitio de bloque para mac base. Y como resultado su sobre dos veces como lento como contador modos. Se ve que la OCB es realmente el más rápido de estos, principalmente porque se sólo utilice el cifrado de bloque por bloque de mensaje. Por lo tanto basado en estas rendimiento números, uno pensaría que el GCM es exactamente el modo correcto para usar siempre. Pero resulta que si estás en el hardware de espacio limitado, GCM no es ideal. Sobre todo porque su aplicación requiere código mayor que los otros dos modos. Sin embargo, como ya he dicho, Intel específicamente agrega instrucciones para acelerar modo de GCM. Y como resultado, aplicación de GCM sobre una arquitectura [inaudible] toma muy poco código. Pero en otras plataformas de hardware, visto en tarjetas inteligentes u otros entornos limitados, los sitios de código para implementar GCM sería considerablemente más grande que los otros dos meses. Pero si el tamaño del código no es una restricción entonces gcm es el modo correcto de utilizar. Para resumir este segmento quiere decir que uno más tiempo cuando desea cifrar mensajes que tienes que utilizar una autenticación modo de cifrado y la manera recomendada de hacerlo es utilizar uno de los estándares, principalmente uno de estos tres modos para proporcionar autenticación cifrado. No aplicar el esquema de cifrado, en otra palabras generar, implementar cifrar y mac usted mismo. Sólo tiene que utilizar uno de estos tres estándares. Muchos cifrar las bibliotecas ahora prever estos tres modos de ABI estándar y estos son los de uno que debe estar utilizando y nada más. En el siguiente segmento vamos a ver qué otra cosa puede salir mal cuando se intenta implementar un cifrado sonicated.