[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:04.01,Default,,0000,0000,0000,,En este segmento, quiero dar unos cuantos ejemplos de secuencias de cifrado que se utilizan en la practica. Dialogue: 0,0:00:04.01,0:00:07.07,Default,,0000,0000,0000,,Voy a empezar con dos ejemplos antiguos, supongo Dialogue: 0,0:00:07.07,0:00:11.02,Default,,0000,0000,0000,,que no son usados en nuevos sistemas. Pero si embargo, todavia son Dialogue: 0,0:00:11.02,0:00:14.16,Default,,0000,0000,0000,,ampliamente usados, y solo quiero mencionar los nombres de modo que se familiarice con Dialogue: 0,0:00:14.16,0:00:19.09,Default,,0000,0000,0000,,estos conceptos. La primera secuencia de cifrado de la quiero hablar es llamado RC4, diseñado Dialogue: 0,0:00:19.09,0:00:23.43,Default,,0000,0000,0000,,en 1987. Solo quiero dar una breve descripcion de el, y entonces Dialogue: 0,0:00:23.43,0:00:27.82,Default,,0000,0000,0000,,hablaremos acerca de algunas debilidades de RC4 y dejarlo en eso. RC4 toma una Dialogue: 0,0:00:27.82,0:00:32.70,Default,,0000,0000,0000,,semilla de tamaño variable, aquí yo sólo puso como ejemplo donde tomaría 128 Dialogue: 0,0:00:32.70,0:00:36.98,Default,,0000,0000,0000,,bits como el tamaño de la semilla, que luego se utilizaría como la clave para el cifrado de flujo. Dialogue: 0,0:00:36.98,0:00:41.74,Default,,0000,0000,0000,,Lo primero hace, es que expande la clave secreta de 128-bit a 2.048 bits, que Dialogue: 0,0:00:41.74,0:00:46.38,Default,,0000,0000,0000,,se va a utilizar como del estado interno para el generador. Y luego, una vez que se hace Dialogue: 0,0:00:46.38,0:00:51.20,Default,,0000,0000,0000,,Esta expansión, básicamente ejecuta un bucle muy simple, donde cada iteración del Dialogue: 0,0:00:51.20,0:00:55.90,Default,,0000,0000,0000,,Este bucle de salidas de un byte de salida. Así que, esencialmente, puede ejecutar el generador para Dialogue: 0,0:00:55.90,0:01:00.65,Default,,0000,0000,0000,,mientras que desee y genera un byte a la vez. Ahora RC4 es realmente, como he dicho, Dialogue: 0,0:01:00.65,0:01:05.20,Default,,0000,0000,0000,,bastante popular. Se utiliza en el protocolo HTTPS comúnmente realmente. Dialogue: 0,0:01:05.20,0:01:11.89,Default,,0000,0000,0000,,Estos días, por ejemplo, Google utiliza RC4 en su HTTPS. También se utiliza en WEP como nosotros Dialogue: 0,0:01:11.89,0:01:15.69,Default,,0000,0000,0000,,discutido en el último segmento, pero por supuesto en WEP, se utiliza incorrectamente y Dialogue: 0,0:01:15.69,0:01:18.86,Default,,0000,0000,0000,,es completamente inseguro la forma en que se utiliza dentro de WEP. Lo largo de los años, Dialogue: 0,0:01:18.86,0:01:23.89,Default,,0000,0000,0000,,se han encontrado algunas deficiencias en RC4, y como resultado, se recomienda que nuevos proyectos Dialogue: 0,0:01:23.89,0:01:28.79,Default,,0000,0000,0000,,en realidad no utilizar RC4 pero prefiere usar un generador pseudoaleatorio más moderno como veremos Dialogue: 0,0:01:28.79,0:01:34.06,Default,,0000,0000,0000,,discutir hacia el final del segmento. Así que permítanme mencionar sólo dos de los puntos débiles. Dialogue: 0,0:01:34.06,0:01:39.56,Default,,0000,0000,0000,,Por lo que es la primera de ellas, es tipo de extraño básicamente, si nos fijamos en el segundo byte Dialogue: 0,0:01:39.56,0:01:44.63,Default,,0000,0000,0000,,de la salida de RC4. Resulta que el segundo byte está ligeramente sesgada. Si fue de RC4 Dialogue: 0,0:01:44.63,0:01:49.78,Default,,0000,0000,0000,,completamente al azar, la probabilidad de que el segundo byte pasa a ser igual a cero Dialogue: 0,0:01:49.78,0:01:54.74,Default,,0000,0000,0000,,exactamente uno sería más de 256. Hay 256 bytes posibles, la probabilidad de que Dialogue: 0,0:01:54.74,0:01:59.65,Default,,0000,0000,0000,,es la cero debería ser uno más de 256. Resulta que para RC4 la probabilidad es Dialogue: 0,0:01:59.65,0:02:04.49,Default,,0000,0000,0000,,realmente dos sobre 256, lo que significa que si usas la salida RC4 para cifrar una Dialogue: 0,0:02:04.49,0:02:09.57,Default,,0000,0000,0000,,mensaje el segundo byte es probable que no sean encriptados. En otras palabras le Dialogue: 0,0:02:09.57,0:02:14.58,Default,,0000,0000,0000,,ser XOR-ed con cero con dos veces la probabilidad de que se supone que. Dialogue: 0,0:02:14.58,0:02:19.44,Default,,0000,0000,0000,,Dos sobre 256, en lugar de uno sobre 256.\NY por cierto debo decir que hay Dialogue: 0,0:02:19.44,0:02:22.85,Default,,0000,0000,0000,,nada especial en el segundo byte. Resulta que la primera y los terceros bytes Dialogue: 0,0:02:22.85,0:02:27.82,Default,,0000,0000,0000,,también están sesgadas. Y de hecho se ahora recomienda si vas a usar RC4, Dialogue: 0,0:02:27.82,0:02:32.80,Default,,0000,0000,0000,,lo que debe hacer es ignorar básicamente los primeros 256 bytes de la salida y sólo Dialogue: 0,0:02:32.80,0:02:37.25,Default,,0000,0000,0000,,empezar a utilizar la salida del generador a partir de byte 257. La primera pareja Dialogue: 0,0:02:37.25,0:02:41.24,Default,,0000,0000,0000,,de bytes resultados ser sesgada, así que usted sólo ignorarlos. El segundo ataque Dialogue: 0,0:02:41.24,0:02:48.48,Default,,0000,0000,0000,,se descubrió que de hecho si observas una muy larga salida de RC4 resulta Dialogue: 0,0:02:48.48,0:02:53.86,Default,,0000,0000,0000,,que es más probable conseguir la secuencia 00. En otras palabras, eres más Dialogue: 0,0:02:53.86,0:02:58.97,Default,,0000,0000,0000,,probabilidades de tener dieciséis bits, dos bytes de cero, cero, lo que debería. Nuevamente, si RC4 Dialogue: 0,0:02:58.97,0:03:03.95,Default,,0000,0000,0000,,fue completamente al azar la probabilidad de ver cero, cero sería exactamente 1/256 Dialogue: 0,0:03:03.95,0:03:08.56,Default,,0000,0000,0000,,cuadrado. Resulta que es un poco tendencioso RC4 y el sesgo en cubos de 1/256. Se Dialogue: 0,0:03:08.56,0:03:13.72,Default,,0000,0000,0000,,resulta de este sesgo comienza realmente después de varios gigabytes de datos son producidos por Dialogue: 0,0:03:13.72,0:03:18.63,Default,,0000,0000,0000,,RC4. Pero sin embargo, esto es algo que puede utilizarse para predecir el generador Dialogue: 0,0:03:18.63,0:03:23.12,Default,,0000,0000,0000,,y definitivamente puede utilizarse para distinguir la salida del generador Dialogue: 0,0:03:23.12,0:03:28.10,Default,,0000,0000,0000,,desde una secuencia aleatoria. Básicamente el hecho de que cero, cero aparece más a menudo Dialogue: 0,0:03:28.10,0:03:32.41,Default,,0000,0000,0000,,lo que debería es el distinguisher. Y, a continuación, en el último segmento hablamos sobre Dialogue: 0,0:03:32.41,0:03:36.31,Default,,0000,0000,0000,,ataques de clave relacionada que se utilizaron para atacar WEP, que básicamente dicen Dialogue: 0,0:03:36.31,0:03:41.08,Default,,0000,0000,0000,,Si uno usa las claves que están estrechamente relacionadas entre sí es posible Dialogue: 0,0:03:41.08,0:03:45.73,Default,,0000,0000,0000,,para recuperar la clave raíz. Así que estos son los puntos débiles que se conocen de RC4 y, como un Dialogue: 0,0:03:45.73,0:03:50.22,Default,,0000,0000,0000,,resultado, se recomienda que nuevos sistemas realmente no utilizan RC4 y en su lugar utilizan un Dialogue: 0,0:03:50.22,0:03:54.42,Default,,0000,0000,0000,,moderno generador pseudoaleatorio. Vale, la segunda es el ejemplo que quiero darle un Dialogue: 0,0:03:54.42,0:03:59.13,Default,,0000,0000,0000,,cifrado de flujo mal roto que se utiliza para cifrar las películas en DVD. Cuando compres un DVD Dialogue: 0,0:03:59.13,0:04:03.50,Default,,0000,0000,0000,,en la tienda, la película real se cifra mediante un cifrado de flujo que se llama el Dialogue: 0,0:04:03.50,0:04:07.93,Default,,0000,0000,0000,,sistema de codificación, CSS de contenido. CSS resulta para ser un cifrado de flujo mal roto, Dialogue: 0,0:04:07.93,0:04:12.52,Default,,0000,0000,0000,,muy fácilmente podemos romperlo y quiero mostrarle cómo el algoritmo de ataque Dialogue: 0,0:04:12.52,0:04:16.89,Default,,0000,0000,0000,,obras. Que estamos haciendo para que pueda ver un ejemplo de un algoritmo de ataque, pero en Dialogue: 0,0:04:16.89,0:04:21.44,Default,,0000,0000,0000,,hecho, hay muchos sistemas que hay que utilizar básicamente este ataque para descifrar Dialogue: 0,0:04:21.44,0:04:25.75,Default,,0000,0000,0000,,DVDs cifrados. Así que la CSS stream cipher es basado en algo que el hardware Dialogue: 0,0:04:25.75,0:04:30.29,Default,,0000,0000,0000,,como diseñadores. Ha diseñado para ser un cifrado de flujo de hardware que se supone que Dialogue: 0,0:04:30.29,0:04:34.49,Default,,0000,0000,0000,,ser fácil de implementar en hardware y se basa en un mecanismo llamado lineal Dialogue: 0,0:04:34.49,0:04:38.75,Default,,0000,0000,0000,,Feedback shift register. Por lo tanto un registro de desplazamiento lineal de retroalimentación es básicamente un registro Dialogue: 0,0:04:38.75,0:04:43.80,Default,,0000,0000,0000,,consiste en células donde cada celda contiene un bit. A continuación, básicamente Dialogue: 0,0:04:43.80,0:04:49.05,Default,,0000,0000,0000,,lo que pasa es que hay Estos grifos en ciertas células, no todas las células, ciertos Dialogue: 0,0:04:49.05,0:04:54.13,Default,,0000,0000,0000,,posiciones son llamados grifos. Y luego estos grifos de alimentación en un XOR y, a continuación, en Dialogue: 0,0:04:54.13,0:04:59.05,Default,,0000,0000,0000,,cada ciclo de reloj, el cambio de registrar cambios hacia la izquierda. Cae el último bit Dialogue: 0,0:04:59.05,0:05:04.34,Default,,0000,0000,0000,,y entonces el primer bit se convierte en el resultado de este XOR. Por lo que se puede ver que Dialogue: 0,0:05:04.34,0:05:08.70,Default,,0000,0000,0000,,Este es un mecanismo muy simple de implementar y en hardware tiene muy pocos Dialogue: 0,0:05:08.70,0:05:13.62,Default,,0000,0000,0000,,transistores. Sólo el cambio justo, cae el bit último y el primer bit sólo Dialogue: 0,0:05:13.62,0:05:18.54,Default,,0000,0000,0000,,se convierte en el XOR de los bits anteriores. Por eso la semilla para este LFSR Dialogue: 0,0:05:18.54,0:05:23.46,Default,,0000,0000,0000,,Básicamente, es el estado inicial de la LFSR. Dialogue: 0,0:05:23.65,0:05:28.54,Default,,0000,0000,0000,,Y es la base de un número de cifrados en flujo. Aquí hay algunos ejemplos. Así, como Dialogue: 0,0:05:28.54,0:05:33.36,Default,,0000,0000,0000,,Es decir, DVD cifrado utiliza dos LFSR.\NTe voy a mostrar cómo funciona sólo un Dialogue: 0,0:05:33.36,0:05:38.06,Default,,0000,0000,0000,,en segundo lugar. Cifrado GSM, estos son algoritmos llamados A51 y A52. Y Dialogue: 0,0:05:38.06,0:05:43.46,Default,,0000,0000,0000,,utiliza tres LFSR Bluetooth cifrado es un algoritmo llamado, cero E. Estos son todos los Dialogue: 0,0:05:43.46,0:05:48.53,Default,,0000,0000,0000,,cifrados en flujo, y que utiliza cuatro LFSR. resulta que todos estos son mal roto, Dialogue: 0,0:05:48.53,0:05:53.24,Default,,0000,0000,0000,,y realmente, realmente no debe confiar para cifrar el tráfico, pero son todos Dialogue: 0,0:05:53.24,0:05:56.70,Default,,0000,0000,0000,,implementado en el hardware, por lo que ahora es un poco difícil para cambiar el hardware Dialogue: 0,0:05:56.70,0:06:01.05,Default,,0000,0000,0000,,hace. Pero el más simple de estos, CSS, realmente tiene un lindo ataque sobre él, así que Dialogue: 0,0:06:01.05,0:06:05.46,Default,,0000,0000,0000,,me muestran cómo funciona el ataque. Por lo tanto, vamos a describir cómo funciona CSS. Por lo tanto, Dialogue: 0,0:06:05.46,0:06:11.07,Default,,0000,0000,0000,,la clave para CSS es cinco bytes, es decir, 40 bits, cinco veces ocho es de 40 bits. El Dialogue: 0,0:06:11.07,0:06:15.59,Default,,0000,0000,0000,,razón tuvieron que limitarse a sólo 40 bits es que fue cifrado de DVD Dialogue: 0,0:06:15.59,0:06:19.94,Default,,0000,0000,0000,,diseñado en un momento donde sólo permitieron regulaciones de exportación de Estados Unidos para la exportación de Dialogue: 0,0:06:19.94,0:06:25.09,Default,,0000,0000,0000,,algoritmos de crpyto donde la clave fue sólo de 40 bits. Así fueron los diseñadores de CSS Dialogue: 0,0:06:25.09,0:06:30.21,Default,,0000,0000,0000,,ya limitado a claves muy, muy cortas.\NSólo las claves de 40 bits. Por lo tanto, su diseño funciona Dialogue: 0,0:06:30.21,0:06:35.40,Default,,0000,0000,0000,,como sigue. Básicamente, CSS utiliza de dos LFSR. Uno es un LFSR de 17 bits. En otras palabras, Dialogue: 0,0:06:35.40,0:06:40.81,Default,,0000,0000,0000,,el registro contiene 17 bits. Y el otro es un LFSR 25 bits, Dialogue: 0,0:06:40.81,0:06:46.65,Default,,0000,0000,0000,,es un poco más, 25 bits LFSR. Y la forma en que se siembran estos LFSR Dialogue: 0,0:06:46.65,0:06:51.87,Default,,0000,0000,0000,,es como sigue. Así que la clave para el cifrado, básicamente se ve como sigue. Dialogue: 0,0:06:51.87,0:06:57.67,Default,,0000,0000,0000,,Comienzas con un uno, y se concatenar para los dos primeros bytes de Dialogue: 0,0:06:57.67,0:07:02.95,Default,,0000,0000,0000,,la clave. Y es el estado inicial de la LFSR. Dialogue: 0,0:07:02.95,0:07:08.26,Default,,0000,0000,0000,,Y luego la segunda LFSR básicamente es intitialized la misma manera. Dialogue: 0,0:07:08.26,0:07:14.01,Default,,0000,0000,0000,,Uno concatenados los tres últimos bytes de la clave. Y esa es la Dialogue: 0,0:07:14.01,0:07:19.89,Default,,0000,0000,0000,,cargado en el estado inicial de la LFSR.\NPuede ver que los dos primeros bytes son Dialogue: 0,0:07:19.89,0:07:25.41,Default,,0000,0000,0000,,dieciséis bits, además de un líder, que diecisiete bits en general, mientras que el segundo Dialogue: 0,0:07:25.41,0:07:31.22,Default,,0000,0000,0000,,LFSR es 24 bits más uno que es de 25 bits.\NY observa que usamos todos los cinco bits de Dialogue: 0,0:07:31.22,0:07:36.88,Default,,0000,0000,0000,,la clave. Entonces que estos LFSR es básicamente durará ocho ciclos, por lo que generan Dialogue: 0,0:07:36.88,0:07:42.33,Default,,0000,0000,0000,,ocho bits de salida. Y luego se van a través de esta víbora que hace básicamente Dialogue: 0,0:07:42.33,0:07:48.20,Default,,0000,0000,0000,,suma módulo 256. Sí, por lo que se trata de un cuadro de adición, módulo 256. Hay uno más Dialogue: 0,0:07:48.20,0:07:54.32,Default,,0000,0000,0000,,técnica lo que sucede. De hecho vamos a realmente — también agregó es el acarreo de la Dialogue: 0,0:07:54.32,0:07:59.72,Default,,0000,0000,0000,,bloque anterior. Pero eso no es tan importante. Eso es un detalle que no es así Dialogue: 0,0:07:59.72,0:08:04.76,Default,,0000,0000,0000,,pertinentes. OK, así que cada bloque, notará que estamos haciendo suma módulo 256 y Dialogue: 0,0:08:04.76,0:08:09.98,Default,,0000,0000,0000,,nosotros estamos ignorando el acarreo, pero el transporte básicamente se agrega como un cero o un uno a la Dialogue: 0,0:08:09.98,0:08:15.15,Default,,0000,0000,0000,,adición del siguiente bloque. ¿Vale? Y, a continuación, básicamente esta salida un byte por ronda. Dialogue: 0,0:08:15.15,0:08:20.41,Default,,0000,0000,0000,,Vale, y entonces este byte es entonces por supuesto utilizado, XOR-ed con la adecuada Dialogue: 0,0:08:20.41,0:08:25.17,Default,,0000,0000,0000,,byte de la película que está siendo encriptada.\NBueno, por lo que es una secuencia muy simple Dialogue: 0,0:08:25.17,0:08:29.99,Default,,0000,0000,0000,,cifrado, tarda muy poco hardware a implementar. Se ejecutará rápido, incluso muy Dialogue: 0,0:08:29.99,0:08:35.83,Default,,0000,0000,0000,,hardware barato y se cifrará películas.\NPor lo que resulta de esto es fácil de romper Dialogue: 0,0:08:35.83,0:08:41.22,Default,,0000,0000,0000,,en tiempo aproximadamente dos a los diecisiete años. Ahora Permítanme mostrarles cómo. Dialogue: 0,0:08:41.22,0:08:45.73,Default,,0000,0000,0000,,Así que supongamos que interceptar las películas, así que aquí tenemos un Dialogue: 0,0:08:45.73,0:08:50.65,Default,,0000,0000,0000,,película cifrado que desea descifrar.\NAsí que vamos a decir que esto es todo cifrado lo Dialogue: 0,0:08:50.65,0:08:55.28,Default,,0000,0000,0000,,no tienes idea lo que está dentro de aquí.\NSin embargo, resulta sólo porque Dialogue: 0,0:08:55.28,0:08:59.97,Default,,0000,0000,0000,,Codificación de DVD está utilizando archivos MPEG, sucede si usted sabe de un prefijo de la Dialogue: 0,0:08:59.97,0:09:04.25,Default,,0000,0000,0000,,texto plano, digamos tal vez esto es veinte bytes. Ahora bien, sabemos que si usted Dialogue: 0,0:09:04.25,0:09:08.59,Default,,0000,0000,0000,,XOR estas dos cosas juntas, en otras palabras, que hacer el XOR aquí, Dialogue: 0,0:09:08.59,0:09:13.52,Default,,0000,0000,0000,,lo que usted obtendrá es el segmento inicial de la PRG. Así, obtendrá el Dialogue: 0,0:09:13.52,0:09:18.47,Default,,0000,0000,0000,,primeros veinte bytes de la salida de CSS, la salida de este PRG. Bueno, ahora Dialogue: 0,0:09:18.47,0:09:23.99,Default,,0000,0000,0000,,aquí es lo que vamos a hacer. Así tenemos los veinte primeros bytes de la salida. Ahora Dialogue: 0,0:09:23.99,0:09:31.40,Default,,0000,0000,0000,,hacemos lo siguiente. Tratamos todos los dos a los diecisiete valores posibles de la primera Dialogue: 0,0:09:31.40,0:09:37.09,Default,,0000,0000,0000,,LFSR. ¿Vale? Dos a los diecisiete valores posibles. Para cada valor, para Dialogue: 0,0:09:37.09,0:09:42.62,Default,,0000,0000,0000,,cada de estos dos, a los diecisiete valores iniciales de la LFSR, vamos a ejecutar la Dialogue: 0,0:09:42.62,0:09:47.95,Default,,0000,0000,0000,,LFSR para veinte bytes, ¿vale? Por eso te generar 20 bytes de salidas de este Dialogue: 0,0:09:47.95,0:09:53.28,Default,,0000,0000,0000,,primera LFSR, asumiendo — para cada uno de los dos a las diecisiete configuraciones posibles. Dialogue: 0,0:09:53.28,0:09:58.62,Default,,0000,0000,0000,,Ahora, recuerde que tenemos la salida completa del sistema de la CSS. Así lo que podemos hacer es Dialogue: 0,0:09:58.62,0:10:03.81,Default,,0000,0000,0000,,puede tomar esta salida que tenemos. Y Réstelo de las mordeduras de veinte que nosotros Dialogue: 0,0:10:03.81,0:10:08.93,Default,,0000,0000,0000,,obtuvo de la primera LFSR y si de hecho nuestra estimación para el estado inicial de la primera Dialogue: 0,0:10:08.93,0:10:14.04,Default,,0000,0000,0000,,LFSR es correcta, lo que lleguemos es la primera salida de veinte bytes de la Dialogue: 0,0:10:14.04,0:10:19.22,Default,,0000,0000,0000,,segunda LFSR. ¿Verdad? Debido a es, por definición, lo que la salida de la CSS Dialogue: 0,0:10:19.22,0:10:24.50,Default,,0000,0000,0000,,es el sistema. Ahora, resulta que mirando una secuencia de 20 bytes, es muy fácil Dialogue: 0,0:10:24.50,0:10:29.76,Default,,0000,0000,0000,,para saber si esta secuencia de 20 bytes procede de un LFSR 25 bits o no. Si se Dialogue: 0,0:10:29.76,0:10:33.56,Default,,0000,0000,0000,,no, entonces sabemos que nuestra estimación de la LFSR de 17 bits Dialogue: 0,0:10:33.56,0:10:37.42,Default,,0000,0000,0000,,incorrecto y, a continuación, pasamos a la siguiente supongo que para el LFSR de 17 bits y Dialogue: 0,0:10:37.42,0:10:41.90,Default,,0000,0000,0000,,la próxima adivinar y así sucesivamente y así sucesivamente.\NHasta que finalmente nos alcanzaron el derecho inicial Dialogue: 0,0:10:41.90,0:10:46.94,Default,,0000,0000,0000,,Estado para el LFSR de 17 bits y luego nos pondremos realmente, veremos que Dialogue: 0,0:10:46.94,0:10:51.97,Default,,0000,0000,0000,,los 20 bytes que obtenemos como candidato es de salida para el LFSR 25 bits Dialogue: 0,0:10:51.97,0:10:56.94,Default,,0000,0000,0000,,de hecho de una posible salida para un LFSR 25 bits. Y entonces, no sólo tendremos Dialogue: 0,0:10:56.94,0:11:02.16,Default,,0000,0000,0000,,aprendió el correcto estado inicial para el LFSR de 17 bits, tendremos también Dialogue: 0,0:11:02.16,0:11:07.52,Default,,0000,0000,0000,,aprendió el correcto estado inicial de la LFSR 25 bits. Y, a continuación, podemos predecir el Dialogue: 0,0:11:07.52,0:11:12.80,Default,,0000,0000,0000,,restantes salidas de CSS y por supuesto, con que nos podemos descifrar el resto de Dialogue: 0,0:11:12.80,0:11:17.56,Default,,0000,0000,0000,,la película. Realmente podemos recuperar el texto restante. Esta bien. Esto es Dialogue: 0,0:11:17.56,0:11:22.34,Default,,0000,0000,0000,,cosas que hemos hablado antes. Por lo tanto, lo dicho un poco rápido, pero ojalá, Dialogue: 0,0:11:22.34,0:11:27.33,Default,,0000,0000,0000,,estaba claro. También vamos a estar haciendo un ejercicio de la tarea en este tipo de secuencia Dialogue: 0,0:11:27.33,0:11:31.44,Default,,0000,0000,0000,,tipo de cifrados y usted obtendrá el punto de cómo estos algoritmos de ataque Dialogue: 0,0:11:31.44,0:11:36.02,Default,,0000,0000,0000,,trabajo. Y debo mencionar que existen muchos sistemas de código abierto ahora que realmente Dialogue: 0,0:11:36.02,0:11:41.45,Default,,0000,0000,0000,,Utilice este método para descifrar los datos cifrados de CSS. Vale, ahora que hemos visto dos Dialogue: 0,0:11:41.45,0:11:45.89,Default,,0000,0000,0000,,ejemplos débiles, pasemos a ejemplos mejores y en particular el mejor Dialogue: 0,0:11:45.89,0:11:49.37,Default,,0000,0000,0000,,generadores pseudoaleatorios provienen de lo que ha llamado el eStream proyecto. Este es un Dialogue: 0,0:11:49.37,0:11:55.56,Default,,0000,0000,0000,,proyecto que concluyó en 2008, y califican básicamente cinco diferentes stream Dialogue: 0,0:11:55.56,0:12:00.21,Default,,0000,0000,0000,,cifrados, pero aquí quiero presentar sólo uno. Lo primero de todos los parámetros para Dialogue: 0,0:12:00.21,0:12:04.03,Default,,0000,0000,0000,,son un poco diferentes de lo que estamos acostumbrados a estos cifrados en flujo. Por lo que estas Dialogue: 0,0:12:04.03,0:12:08.34,Default,,0000,0000,0000,,secuencia de cifra normalmente tienen una semilla.\NPero además también tienen, lo que de Dialogue: 0,0:12:08.34,0:12:12.82,Default,,0000,0000,0000,,llamado un nonce y nos veremos qué se utiliza un nonce en sólo un minuto. Por lo tanto Dialogue: 0,0:12:12.82,0:12:17.49,Default,,0000,0000,0000,,llevan dos entradas una semilla y un nonce.\NVamos a ver qué se usa el nonce en Dialogue: 0,0:12:17.49,0:12:21.27,Default,,0000,0000,0000,,sólo un segundo. Y el supuesto producen una salida muy grande, así que n es aquí Dialogue: 0,0:12:21.27,0:12:26.60,Default,,0000,0000,0000,,mucho, mucho, mucho mayor que s. Ahora, cuando digo nonce, lo que quiero decir es un valor que Dialogue: 0,0:12:26.60,0:12:31.22,Default,,0000,0000,0000,,Nunca se va a repetir como la clave es fijo. Y explicaré en más Dialogue: 0,0:12:31.22,0:12:35.40,Default,,0000,0000,0000,,detalle en sólo un segundo. Pero por ahora, sólo piense en ello como un único no valor que nunca Dialogue: 0,0:12:35.40,0:12:40.53,Default,,0000,0000,0000,,repite como la clave es la misma.\NY tan naturalmente una vez que tenga este PRG, Dialogue: 0,0:12:40.53,0:12:45.36,Default,,0000,0000,0000,,se podría cifrar, usted obtiene un cifrado de flujo igual que antes, excepto ahora como ves, la Dialogue: 0,0:12:45.36,0:12:49.96,Default,,0000,0000,0000,,PRG toma como entrada el clave y el nonce. Y la propiedad de la nonce Dialogue: 0,0:12:49.96,0:12:56.35,Default,,0000,0000,0000,,que el par, k coma r, para que la coma clave la nonce, nunca, nunca se repite. Tiene Dialogue: 0,0:12:56.35,0:13:03.10,Default,,0000,0000,0000,,Nunca utilizar más de una vez. Así que la línea de fondo es que se puede reutilizar la clave, reutilización Dialogue: 0,0:13:03.10,0:13:09.71,Default,,0000,0000,0000,,la clave, porque la nonce hace la pareja única, porque el k y r son sólo Dialogue: 0,0:13:09.71,0:13:16.14,Default,,0000,0000,0000,,usar una vez. Yo diría que son únicos. Bien por lo que es este nonce truco tipo de un lindo Dialogue: 0,0:13:16.14,0:13:21.54,Default,,0000,0000,0000,,nos ahorra la molestia de mover a una nueva clave cada vez. Está bien, así que el particular Dialogue: 0,0:13:21.54,0:13:26.00,Default,,0000,0000,0000,,ejemplo de la eStream que quiero mostrarle se llama Salsa veinte. Es un Dialogue: 0,0:13:26.00,0:13:30.29,Default,,0000,0000,0000,,cifrado de flujo que está diseñado para implementaciones de software y hardware Dialogue: 0,0:13:30.29,0:13:33.38,Default,,0000,0000,0000,,implementaciones. Es interesante.\NTe das cuenta de que son algunos cifrados en flujo Dialogue: 0,0:13:33.38,0:13:38.76,Default,,0000,0000,0000,,diseñada para el software, como RC4.\NTodo lo que hace está diseñada para hacer Dialogue: 0,0:13:38.76,0:13:42.69,Default,,0000,0000,0000,,implementación de software correr rápido, mientras que otros cifrados en flujo están diseñados para Dialogue: 0,0:13:42.69,0:13:48.14,Default,,0000,0000,0000,,hardware, como CSS, usando un LFSR que ha diseñado especialmente para hardware Dialogue: 0,0:13:48.14,0:13:50.96,Default,,0000,0000,0000,,implementaciones muy baratas. Es también, lo bueno de eso es que es Dialogue: 0,0:13:50.96,0:13:55.01,Default,,0000,0000,0000,,diseñado de manera que es tanto fácil de implementarlo en el hardware y su software Dialogue: 0,0:13:55.01,0:13:59.75,Default,,0000,0000,0000,,aplicación también es muy rápido. Así que permítanme explicar cómo funciona la Salsa. Bueno, Salsa Dialogue: 0,0:13:59.75,0:14:05.13,Default,,0000,0000,0000,,toma las llaves de 128 ó 256 bits. Sólo voy a explicar la versión de 128 bits de la Salsa. Dialogue: 0,0:14:05.13,0:14:11.24,Default,,0000,0000,0000,,Esto es la semilla. Y, a continuación, también tiene un nonce, justo como antes, que Dialogue: 0,0:14:11.24,0:14:15.42,Default,,0000,0000,0000,,pasa a ser de 64 bits. Y luego te genera una gran salida. Ahora, cómo se Dialogue: 0,0:14:15.42,0:14:21.06,Default,,0000,0000,0000,,¿realmente funciona? Así, la propia función se define como sigue. Básicamente, dado Dialogue: 0,0:14:21.06,0:14:26.38,Default,,0000,0000,0000,,la clave y el nonce, generará una muy larga, bueno, una larga pseudoaleatorio Dialogue: 0,0:14:26.38,0:14:31.22,Default,,0000,0000,0000,,secuencia, tanto tiempo como sea necesario. Y lo haremos utilizando esta función que voy denotar por Dialogue: 0,0:14:31.22,0:14:35.65,Default,,0000,0000,0000,,H. esta función h toma tres entradas.\NBásicamente la clave. Bien, la semilla k, Dialogue: 0,0:14:35.65,0:14:40.50,Default,,0000,0000,0000,,la Nuna r y luego un contador que aumenta desde el paso a paso. So it goes Dialogue: 0,0:14:40.50,0:14:45.26,Default,,0000,0000,0000,,de cero a uno, dos, tres, cuatro como mucho como nosotros [inaudible] ser. ¿Vale? Así que, básicamente, Dialogue: 0,0:14:45.26,0:14:49.96,Default,,0000,0000,0000,,por evaluar este h en esta r k, pero este incremento contador, podemos obtener un Dialogue: 0,0:14:49.96,0:14:54.88,Default,,0000,0000,0000,,secuencia que es tan larga como queramos. Así lo único que tengo que hacer es describir cómo esta función Dialogue: 0,0:14:54.88,0:14:59.46,Default,,0000,0000,0000,,H obras. Ahora, permítanme hacer eso aquí para usted.\NEl funcionamiento es como sigue. Bueno, nos Dialogue: 0,0:14:59.46,0:15:04.69,Default,,0000,0000,0000,,empezar por la expansión de los Estados en algo bastante grande que es de 64 bytes Dialogue: 0,0:15:04.69,0:15:10.16,Default,,0000,0000,0000,,larga ya haga lo siguiente. Básicamente nos atenemos una constante desde el principio, así que Dialogue: 0,0:15:10.16,0:15:15.55,Default,,0000,0000,0000,,Hay tao cero, estas son cuatro bytes, es una constante de cuatro bytes, por lo tanto las especificaciones para Dialogue: 0,0:15:15.55,0:15:20.61,Default,,0000,0000,0000,,Salsa básicamente le da el valor para tao cero. Luego ponemos k en la que es Dialogue: 0,0:15:20.61,0:15:25.47,Default,,0000,0000,0000,,16 bytes. Luego ponemos otra constante. Nuevamente, esto es cuatro bytes. Y Dialogue: 0,0:15:25.47,0:15:30.80,Default,,0000,0000,0000,,como dije, la especificación especifica básicamente lo que es esta constante fija. A continuación, ponemos Dialogue: 0,0:15:30.80,0:15:37.44,Default,,0000,0000,0000,,el nonce, que es ocho bytes. A continuación ponemos el índice. Este es el contador a cero, Dialogue: 0,0:15:37.44,0:15:43.06,Default,,0000,0000,0000,,uno, dos, tres, cuatro, que es otro ocho bytes. Luego ponemos otra constante Dialogue: 0,0:15:43.06,0:15:49.06,Default,,0000,0000,0000,,Tau dos, que es otro cuatro bytes.\NA continuación, ponemos la clave de nuevo, este es otro Dialogue: 0,0:15:49.06,0:15:54.71,Default,,0000,0000,0000,,16 bytes. Y entonces finalmente ponemos el tercer tau constante, tres, que es Dialogue: 0,0:15:54.71,0:15:59.95,Default,,0000,0000,0000,,otro cuatro bytes. Está bien tal como dije, si estas resumir, ves que te 64 Dialogue: 0,0:15:59.95,0:16:05.25,Default,,0000,0000,0000,,bytes. Así que básicamente hemos ampliado la clave y el nonce y el contador en 64 Dialogue: 0,0:16:05.25,0:16:10.89,Default,,0000,0000,0000,,bytes. Básicamente se repite la tecla dos veces supongo. Y entonces lo que hacemos es aplicar un Dialogue: 0,0:16:10.89,0:16:16.32,Default,,0000,0000,0000,,función, que llamaré esta h. poco funcional bien, por lo que aplicar esta función, poco h. Dialogue: 0,0:16:16.32,0:16:21.66,Default,,0000,0000,0000,,Y esta es una función que es uno a uno, por lo que asigna 64 bytes a 64 bytes. Es un Dialogue: 0,0:16:21.66,0:16:26.00,Default,,0000,0000,0000,,¿función completamente invertible, okay? Para esta función h es, como digo, es un Dialogue: 0,0:16:26.00,0:16:30.26,Default,,0000,0000,0000,,función invertable. Así que dada la entrada puede obtener la salida y la Dialogue: 0,0:16:30.26,0:16:34.91,Default,,0000,0000,0000,,Puedes volver a la entrada de la salida. Y está diseñado específicamente para que tiene un - fácil Dialogue: 0,0:16:34.91,0:16:39.55,Default,,0000,0000,0000,,para implementar en hardware y b-en un x 86, es extremadamente fácil de implementar porque Dialogue: 0,0:16:39.55,0:16:44.20,Default,,0000,0000,0000,,x 86 tiene este SSE2 conjunto de instrucciones que soporta todas las operaciones que debe hacer Dialogue: 0,0:16:44.20,0:16:48.62,Default,,0000,0000,0000,,para esta función. Es muy, muy rápido.\NComo resultado, la Salsa tiene un flujo muy rápido Dialogue: 0,0:16:48.62,0:16:52.76,Default,,0000,0000,0000,,cifrado. Y luego lo hace básicamente una y otra vez. Por lo que se aplica esta Dialogue: 0,0:16:52.76,0:16:57.74,Default,,0000,0000,0000,,función h nuevamente y se obtiene otro de 64 bytes. Y así sucesivamente y así sucesivamente, básicamente Dialogue: 0,0:16:57.74,0:17:05.32,Default,,0000,0000,0000,,hace esto diez veces. Esta bien todo esto aquí, decir repite diez veces, así que Dialogue: 0,0:17:05.32,0:17:17.96,Default,,0000,0000,0000,,básicamente se aplican h diez veces. Y luego por sí mismo, esto es realmente no muy aleatorio. Dialogue: 0,0:17:17.96,0:17:22.14,Default,,0000,0000,0000,,No va a mirar al azar porque como hemos dicho, H es completamente invertable. Tan dado Dialogue: 0,0:17:22.14,0:17:25.52,Default,,0000,0000,0000,,Este resultado final, es muy fácil invertir sólo h y luego volver al original Dialogue: 0,0:17:25.52,0:17:31.83,Default,,0000,0000,0000,,entradas y luego prueba que la entrada tiene la estructura correcta. Entonces hacer uno más Dialogue: 0,0:17:31.83,0:17:36.98,Default,,0000,0000,0000,,cosa, que es básicamente XOR las entradas y las salidas finales. En realidad, Dialogue: 0,0:17:36.98,0:17:42.40,Default,,0000,0000,0000,,lo siento. No es un XOR. Es realmente una adición. Entonces hacer una palabra además Dialogue: 0,0:17:42.40,0:17:47.76,Default,,0000,0000,0000,,palabra. Así que si hay 64 bytes, no una adición de la palabra por palabra cuatro bytes en un Dialogue: 0,0:17:47.76,0:17:52.98,Default,,0000,0000,0000,,tiempo y finalmente obtener la salida de 64 bytes, y eso es todo. Eso es todo Dialogue: 0,0:17:52.98,0:17:57.18,Default,,0000,0000,0000,,generador pseudoaleatorio. Así que, es la función entera, poco h. Y como yo Dialogue: 0,0:17:57.18,0:18:01.76,Default,,0000,0000,0000,,explicó, esta construcción es la función de gran H. Y luego evaluar Dialogue: 0,0:18:01.76,0:18:06.01,Default,,0000,0000,0000,,Big h incrementando el contador desde cero, uno, dos, tres adelante. Y Dialogue: 0,0:18:06.01,0:18:10.41,Default,,0000,0000,0000,,le dará una secuencia pseudoaleatoria, siempre y cuando usted lo necesita para ser. Y Dialogue: 0,0:18:10.41,0:18:15.32,Default,,0000,0000,0000,,Básicamente, no hay ninguna signifigant ataques a este. Esto tiene la seguridad que Dialogue: 0,0:18:15.32,0:18:20.37,Default,,0000,0000,0000,,muy cerca de dos a los 128. Vamos a ver lo que significa más precisamente más tarde por. Dialogue: 0,0:18:20.37,0:18:25.42,Default,,0000,0000,0000,,Es un cifrado de flujo muy rápido, tanto en hardware como en software. Y, en cuanto Dialogue: 0,0:18:25.42,0:18:30.43,Default,,0000,0000,0000,,podemos decir, que parece ser impredecible como necesaria para un cifrado de flujo. Así que me Dialogue: 0,0:18:30.43,0:18:34.80,Default,,0000,0000,0000,,debería decir que el proyecto de eStream realmente tiene cinco cifrados en flujo como Dialogue: 0,0:18:34.80,0:18:39.40,Default,,0000,0000,0000,,esto. Elegí sólo Salsa porque creo que es la más elegante. Pero le puedo dar Dialogue: 0,0:18:39.40,0:18:44.05,Default,,0000,0000,0000,,aquí algunos números de rendimiento. Para que puedas ver, estos son números de rendimiento en un Dialogue: 0,0:18:44.05,0:18:48.77,Default,,0000,0000,0000,,2.2 gigahercios, sabes, tipo máquina x 86.\NY se puede ver que en realidad es RC4 el Dialogue: 0,0:18:48.77,0:18:53.02,Default,,0000,0000,0000,,más lento. Porque básicamente, bien no realmente toma ventaja de la Dialogue: 0,0:18:53.02,0:18:57.48,Default,,0000,0000,0000,,hardware. No sólo las operaciones de byte.\NAsí que hay un montón de desperdiciadas ciclos que Dialogue: 0,0:18:57.48,0:19:01.18,Default,,0000,0000,0000,,no están siendo utilizados. Pero los candidatos E-Stream, tanto Salsa y otros Dialogue: 0,0:19:01.18,0:19:05.20,Default,,0000,0000,0000,,candidato llamado Sosemanuk. Yo diría que estos son los finalistas eStream. Estos son Dialogue: 0,0:19:05.20,0:19:09.59,Default,,0000,0000,0000,,realmente cifrados en flujo que estén aprobados por el proyecto eStream. Se puede ver que Dialogue: 0,0:19:09.59,0:19:13.71,Default,,0000,0000,0000,,que han alcanzado una tasa significativa.\NSe trata de 643 megabytes por segundo en este Dialogue: 0,0:19:13.71,0:19:18.15,Default,,0000,0000,0000,,arquitectura, más que suficiente para una película y estas son realmente impresionantes Dialogue: 0,0:19:18.15,0:19:22.43,Default,,0000,0000,0000,,tasas. Y ahora que has visto ejemplos de dos viejos cifrados en flujo no deberían ser Dialogue: 0,0:19:22.43,0:19:26.66,Default,,0000,0000,0000,,usa, incluidos ataques contra los cifrados en flujo.\NHas visto lo que la corriente moderna de cifra Dialogue: 0,0:19:26.66,0:19:30.48,Default,,0000,0000,0000,,aspecto con este nonce. Y ver los números de rendimiento para estos Dialogue: 0,0:19:30.48,0:19:34.55,Default,,0000,0000,0000,,stream moderno de cifra por lo que si usted necesita un cifrado de flujo puede utilizar uno de Dialogue: 0,0:19:34.55,0:19:37.99,Default,,0000,0000,0000,,los finalistas eStream. En particular, se podría utilizar algo como Salsa.