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.