-
En este segmento, quiero dar unos cuantos ejemplos de secuencias de cifrado que se utilizan en la practica.
-
Voy a empezar con dos ejemplos antiguos, supongo
-
que no son usados en nuevos sistemas. Pero si embargo, todavia son
-
ampliamente usados, y solo quiero mencionar los nombres de modo que se familiarice con
-
estos conceptos. La primera secuencia de cifrado de la quiero hablar es llamado RC4, diseñado
-
en 1987. Solo quiero dar una breve descripcion de el, y entonces
-
hablaremos acerca de algunas debilidades de RC4 y dejarlo en eso. RC4 toma una
-
semilla de tamaño variable, aquí yo sólo puso como ejemplo donde tomaría 128
-
bits como el tamaño de la semilla, que luego se utilizaría como la clave para el cifrado de flujo.
-
Lo primero hace, es que expande la clave secreta de 128-bit a 2.048 bits, que
-
se va a utilizar como del estado interno para el generador. Y luego, una vez que se hace
-
Esta expansión, básicamente ejecuta un bucle muy simple, donde cada iteración del
-
Este bucle de salidas de un byte de salida. Así que, esencialmente, puede ejecutar el generador para
-
mientras que desee y genera un byte a la vez. Ahora RC4 es realmente, como he dicho,
-
bastante popular. Se utiliza en el protocolo HTTPS comúnmente realmente.
-
Estos días, por ejemplo, Google utiliza RC4 en su HTTPS. También se utiliza en WEP como nosotros
-
discutido en el último segmento, pero por supuesto en WEP, se utiliza incorrectamente y
-
es completamente inseguro la forma en que se utiliza dentro de WEP. Lo largo de los años,
-
se han encontrado algunas deficiencias en RC4, y como resultado, se recomienda que nuevos proyectos
-
en realidad no utilizar RC4 pero prefiere usar un generador pseudoaleatorio más moderno como veremos
-
discutir hacia el final del segmento. Así que permítanme mencionar sólo dos de los puntos débiles.
-
Por lo que es la primera de ellas, es tipo de extraño básicamente, si nos fijamos en el segundo byte
-
de la salida de RC4. Resulta que el segundo byte está ligeramente sesgada. Si fue de RC4
-
completamente al azar, la probabilidad de que el segundo byte pasa a ser igual a cero
-
exactamente uno sería más de 256. Hay 256 bytes posibles, la probabilidad de que
-
es la cero debería ser uno más de 256. Resulta que para RC4 la probabilidad es
-
realmente dos sobre 256, lo que significa que si usas la salida RC4 para cifrar una
-
mensaje el segundo byte es probable que no sean encriptados. En otras palabras le
-
ser XOR-ed con cero con dos veces la probabilidad de que se supone que.
-
Dos sobre 256, en lugar de uno sobre 256.
Y por cierto debo decir que hay
-
nada especial en el segundo byte. Resulta que la primera y los terceros bytes
-
también están sesgadas. Y de hecho se ahora recomienda si vas a usar RC4,
-
lo que debe hacer es ignorar básicamente los primeros 256 bytes de la salida y sólo
-
empezar a utilizar la salida del generador a partir de byte 257. La primera pareja
-
de bytes resultados ser sesgada, así que usted sólo ignorarlos. El segundo ataque
-
se descubrió que de hecho si observas una muy larga salida de RC4 resulta
-
que es más probable conseguir la secuencia 00. En otras palabras, eres más
-
probabilidades de tener dieciséis bits, dos bytes de cero, cero, lo que debería. Nuevamente, si RC4
-
fue completamente al azar la probabilidad de ver cero, cero sería exactamente 1/256
-
cuadrado. Resulta que es un poco tendencioso RC4 y el sesgo en cubos de 1/256. Se
-
resulta de este sesgo comienza realmente después de varios gigabytes de datos son producidos por
-
RC4. Pero sin embargo, esto es algo que puede utilizarse para predecir el generador
-
y definitivamente puede utilizarse para distinguir la salida del generador
-
desde una secuencia aleatoria. Básicamente el hecho de que cero, cero aparece más a menudo
-
lo que debería es el distinguisher. Y, a continuación, en el último segmento hablamos sobre
-
ataques de clave relacionada que se utilizaron para atacar WEP, que básicamente dicen
-
Si uno usa las claves que están estrechamente relacionadas entre sí es posible
-
para recuperar la clave raíz. Así que estos son los puntos débiles que se conocen de RC4 y, como un
-
resultado, se recomienda que nuevos sistemas realmente no utilizan RC4 y en su lugar utilizan un
-
moderno generador pseudoaleatorio. Vale, la segunda es el ejemplo que quiero darle un
-
cifrado de flujo mal roto que se utiliza para cifrar las películas en DVD. Cuando compres un DVD
-
en la tienda, la película real se cifra mediante un cifrado de flujo que se llama el
-
sistema de codificación, CSS de contenido. CSS resulta para ser un cifrado de flujo mal roto,
-
muy fácilmente podemos romperlo y quiero mostrarle cómo el algoritmo de ataque
-
obras. Que estamos haciendo para que pueda ver un ejemplo de un algoritmo de ataque, pero en
-
hecho, hay muchos sistemas que hay que utilizar básicamente este ataque para descifrar
-
DVDs cifrados. Así que la CSS stream cipher es basado en algo que el hardware
-
como diseñadores. Ha diseñado para ser un cifrado de flujo de hardware que se supone que
-
ser fácil de implementar en hardware y se basa en un mecanismo llamado lineal
-
Feedback shift register. Por lo tanto un registro de desplazamiento lineal de retroalimentación es básicamente un registro
-
consiste en células donde cada celda contiene un bit. A continuación, básicamente
-
lo que pasa es que hay Estos grifos en ciertas células, no todas las células, ciertos
-
posiciones son llamados grifos. Y luego estos grifos de alimentación en un XOR y, a continuación, en
-
cada ciclo de reloj, el cambio de registrar cambios hacia la izquierda. Cae el último bit
-
y entonces el primer bit se convierte en el resultado de este XOR. Por lo que se puede ver que
-
Este es un mecanismo muy simple de implementar y en hardware tiene muy pocos
-
transistores. Sólo el cambio justo, cae el bit último y el primer bit sólo
-
se convierte en el XOR de los bits anteriores. Por eso la semilla para este LFSR
-
Básicamente, es el estado inicial de la LFSR.
-
Y es la base de un número de cifrados en flujo. Aquí hay algunos ejemplos. Así, como
-
Es decir, DVD cifrado utiliza dos LFSR.
Te voy a mostrar cómo funciona sólo un
-
en segundo lugar. Cifrado GSM, estos son algoritmos llamados A51 y A52. Y
-
utiliza tres LFSR Bluetooth cifrado es un algoritmo llamado, cero E. Estos son todos los
-
cifrados en flujo, y que utiliza cuatro LFSR. resulta que todos estos son mal roto,
-
y realmente, realmente no debe confiar para cifrar el tráfico, pero son todos
-
implementado en el hardware, por lo que ahora es un poco difícil para cambiar el hardware
-
hace. Pero el más simple de estos, CSS, realmente tiene un lindo ataque sobre él, así que
-
me muestran cómo funciona el ataque. Por lo tanto, vamos a describir cómo funciona CSS. Por lo tanto,
-
la clave para CSS es cinco bytes, es decir, 40 bits, cinco veces ocho es de 40 bits. El
-
razón tuvieron que limitarse a sólo 40 bits es que fue cifrado de DVD
-
diseñado en un momento donde sólo permitieron regulaciones de exportación de Estados Unidos para la exportación de
-
algoritmos de crpyto donde la clave fue sólo de 40 bits. Así fueron los diseñadores de CSS
-
ya limitado a claves muy, muy cortas.
Sólo las claves de 40 bits. Por lo tanto, su diseño funciona
-
como sigue. Básicamente, CSS utiliza de dos LFSR. Uno es un LFSR de 17 bits. En otras palabras,
-
el registro contiene 17 bits. Y el otro es un LFSR 25 bits,
-
es un poco más, 25 bits LFSR. Y la forma en que se siembran estos LFSR
-
es como sigue. Así que la clave para el cifrado, básicamente se ve como sigue.
-
Comienzas con un uno, y se concatenar para los dos primeros bytes de
-
la clave. Y es el estado inicial de la LFSR.
-
Y luego la segunda LFSR básicamente es intitialized la misma manera.
-
Uno concatenados los tres últimos bytes de la clave. Y esa es la
-
cargado en el estado inicial de la LFSR.
Puede ver que los dos primeros bytes son
-
dieciséis bits, además de un líder, que diecisiete bits en general, mientras que el segundo
-
LFSR es 24 bits más uno que es de 25 bits.
Y observa que usamos todos los cinco bits de
-
la clave. Entonces que estos LFSR es básicamente durará ocho ciclos, por lo que generan
-
ocho bits de salida. Y luego se van a través de esta víbora que hace básicamente
-
suma módulo 256. Sí, por lo que se trata de un cuadro de adición, módulo 256. Hay uno más
-
técnica lo que sucede. De hecho vamos a realmente — también agregó es el acarreo de la
-
bloque anterior. Pero eso no es tan importante. Eso es un detalle que no es así
-
pertinentes. OK, así que cada bloque, notará que estamos haciendo suma módulo 256 y
-
nosotros estamos ignorando el acarreo, pero el transporte básicamente se agrega como un cero o un uno a la
-
adición del siguiente bloque. ¿Vale? Y, a continuación, básicamente esta salida un byte por ronda.
-
Vale, y entonces este byte es entonces por supuesto utilizado, XOR-ed con la adecuada
-
byte de la película que está siendo encriptada.
Bueno, por lo que es una secuencia muy simple
-
cifrado, tarda muy poco hardware a implementar. Se ejecutará rápido, incluso muy
-
hardware barato y se cifrará películas.
Por lo que resulta de esto es fácil de romper
-
en tiempo aproximadamente dos a los diecisiete años. Ahora Permítanme mostrarles cómo.
-
Así que supongamos que interceptar las películas, así que aquí tenemos un
-
película cifrado que desea descifrar.
Así que vamos a decir que esto es todo cifrado lo
-
no tienes idea lo que está dentro de aquí.
Sin embargo, resulta sólo porque
-
Codificación de DVD está utilizando archivos MPEG, sucede si usted sabe de un prefijo de la
-
texto plano, digamos tal vez esto es veinte bytes. Ahora bien, sabemos que si usted
-
XOR estas dos cosas juntas, en otras palabras, que hacer el XOR aquí,
-
lo que usted obtendrá es el segmento inicial de la PRG. Así, obtendrá el
-
primeros veinte bytes de la salida de CSS, la salida de este PRG. Bueno, ahora
-
aquí es lo que vamos a hacer. Así tenemos los veinte primeros bytes de la salida. Ahora
-
hacemos lo siguiente. Tratamos todos los dos a los diecisiete valores posibles de la primera
-
LFSR. ¿Vale? Dos a los diecisiete valores posibles. Para cada valor, para
-
cada de estos dos, a los diecisiete valores iniciales de la LFSR, vamos a ejecutar la
-
LFSR para veinte bytes, ¿vale? Por eso te generar 20 bytes de salidas de este
-
primera LFSR, asumiendo — para cada uno de los dos a las diecisiete configuraciones posibles.
-
Ahora, recuerde que tenemos la salida completa del sistema de la CSS. Así lo que podemos hacer es
-
puede tomar esta salida que tenemos. Y Réstelo de las mordeduras de veinte que nosotros
-
obtuvo de la primera LFSR y si de hecho nuestra estimación para el estado inicial de la primera
-
LFSR es correcta, lo que lleguemos es la primera salida de veinte bytes de la
-
segunda LFSR. ¿Verdad? Debido a es, por definición, lo que la salida de la CSS
-
es el sistema. Ahora, resulta que mirando una secuencia de 20 bytes, es muy fácil
-
para saber si esta secuencia de 20 bytes procede de un LFSR 25 bits o no. Si se
-
no, entonces sabemos que nuestra estimación de la LFSR de 17 bits
-
incorrecto y, a continuación, pasamos a la siguiente supongo que para el LFSR de 17 bits y
-
la próxima adivinar y así sucesivamente y así sucesivamente.
Hasta que finalmente nos alcanzaron el derecho inicial
-
Estado para el LFSR de 17 bits y luego nos pondremos realmente, veremos que
-
los 20 bytes que obtenemos como candidato es de salida para el LFSR 25 bits
-
de hecho de una posible salida para un LFSR 25 bits. Y entonces, no sólo tendremos
-
aprendió el correcto estado inicial para el LFSR de 17 bits, tendremos también
-
aprendió el correcto estado inicial de la LFSR 25 bits. Y, a continuación, podemos predecir el
-
restantes salidas de CSS y por supuesto, con que nos podemos descifrar el resto de
-
la película. Realmente podemos recuperar el texto restante. Esta bien. Esto es
-
cosas que hemos hablado antes. Por lo tanto, lo dicho un poco rápido, pero ojalá,
-
estaba claro. También vamos a estar haciendo un ejercicio de la tarea en este tipo de secuencia
-
tipo de cifrados y usted obtendrá el punto de cómo estos algoritmos de ataque
-
trabajo. Y debo mencionar que existen muchos sistemas de código abierto ahora que realmente
-
Utilice este método para descifrar los datos cifrados de CSS. Vale, ahora que hemos visto dos
-
ejemplos débiles, pasemos a ejemplos mejores y en particular el mejor
-
generadores pseudoaleatorios provienen de lo que ha llamado el eStream proyecto. Este es un
-
proyecto que concluyó en 2008, y califican básicamente cinco diferentes stream
-
cifrados, pero aquí quiero presentar sólo uno. Lo primero de todos los parámetros para
-
son un poco diferentes de lo que estamos acostumbrados a estos cifrados en flujo. Por lo que estas
-
secuencia de cifra normalmente tienen una semilla.
Pero además también tienen, lo que de
-
llamado un nonce y nos veremos qué se utiliza un nonce en sólo un minuto. Por lo tanto
-
llevan dos entradas una semilla y un nonce.
Vamos a ver qué se usa el nonce en
-
sólo un segundo. Y el supuesto producen una salida muy grande, así que n es aquí
-
mucho, mucho, mucho mayor que s. Ahora, cuando digo nonce, lo que quiero decir es un valor que
-
Nunca se va a repetir como la clave es fijo. Y explicaré en más
-
detalle en sólo un segundo. Pero por ahora, sólo piense en ello como un único no valor que nunca
-
repite como la clave es la misma.
Y tan naturalmente una vez que tenga este PRG,
-
se podría cifrar, usted obtiene un cifrado de flujo igual que antes, excepto ahora como ves, la
-
PRG toma como entrada el clave y el nonce. Y la propiedad de la nonce
-
que el par, k coma r, para que la coma clave la nonce, nunca, nunca se repite. Tiene
-
Nunca utilizar más de una vez. Así que la línea de fondo es que se puede reutilizar la clave, reutilización
-
la clave, porque la nonce hace la pareja única, porque el k y r son sólo
-
usar una vez. Yo diría que son únicos. Bien por lo que es este nonce truco tipo de un lindo
-
nos ahorra la molestia de mover a una nueva clave cada vez. Está bien, así que el particular
-
ejemplo de la eStream que quiero mostrarle se llama Salsa veinte. Es un
-
cifrado de flujo que está diseñado para implementaciones de software y hardware
-
implementaciones. Es interesante.
Te das cuenta de que son algunos cifrados en flujo
-
diseñada para el software, como RC4.
Todo lo que hace está diseñada para hacer
-
implementación de software correr rápido, mientras que otros cifrados en flujo están diseñados para
-
hardware, como CSS, usando un LFSR que ha diseñado especialmente para hardware
-
implementaciones muy baratas. Es también, lo bueno de eso es que es
-
diseñado de manera que es tanto fácil de implementarlo en el hardware y su software
-
aplicación también es muy rápido. Así que permítanme explicar cómo funciona la Salsa. Bueno, Salsa
-
toma las llaves de 128 ó 256 bits. Sólo voy a explicar la versión de 128 bits de la Salsa.
-
Esto es la semilla. Y, a continuación, también tiene un nonce, justo como antes, que
-
pasa a ser de 64 bits. Y luego te genera una gran salida. Ahora, cómo se
-
¿realmente funciona? Así, la propia función se define como sigue. Básicamente, dado
-
la clave y el nonce, generará una muy larga, bueno, una larga pseudoaleatorio
-
secuencia, tanto tiempo como sea necesario. Y lo haremos utilizando esta función que voy denotar por
-
H. esta función h toma tres entradas.
Básicamente la clave. Bien, la semilla k,
-
la Nuna r y luego un contador que aumenta desde el paso a paso. So it goes
-
de cero a uno, dos, tres, cuatro como mucho como nosotros [inaudible] ser. ¿Vale? Así que, básicamente,
-
por evaluar este h en esta r k, pero este incremento contador, podemos obtener un
-
secuencia que es tan larga como queramos. Así lo único que tengo que hacer es describir cómo esta función
-
H obras. Ahora, permítanme hacer eso aquí para usted.
El funcionamiento es como sigue. Bueno, nos
-
empezar por la expansión de los Estados en algo bastante grande que es de 64 bytes
-
larga ya haga lo siguiente. Básicamente nos atenemos una constante desde el principio, así que
-
Hay tao cero, estas son cuatro bytes, es una constante de cuatro bytes, por lo tanto las especificaciones para
-
Salsa básicamente le da el valor para tao cero. Luego ponemos k en la que es
-
16 bytes. Luego ponemos otra constante. Nuevamente, esto es cuatro bytes. Y
-
como dije, la especificación especifica básicamente lo que es esta constante fija. A continuación, ponemos
-
el nonce, que es ocho bytes. A continuación ponemos el índice. Este es el contador a cero,
-
uno, dos, tres, cuatro, que es otro ocho bytes. Luego ponemos otra constante
-
Tau dos, que es otro cuatro bytes.
A continuación, ponemos la clave de nuevo, este es otro
-
16 bytes. Y entonces finalmente ponemos el tercer tau constante, tres, que es
-
otro cuatro bytes. Está bien tal como dije, si estas resumir, ves que te 64
-
bytes. Así que básicamente hemos ampliado la clave y el nonce y el contador en 64
-
bytes. Básicamente se repite la tecla dos veces supongo. Y entonces lo que hacemos es aplicar un
-
función, que llamaré esta h. poco funcional bien, por lo que aplicar esta función, poco h.
-
Y esta es una función que es uno a uno, por lo que asigna 64 bytes a 64 bytes. Es un
-
¿función completamente invertible, okay? Para esta función h es, como digo, es un
-
función invertable. Así que dada la entrada puede obtener la salida y la
-
Puedes volver a la entrada de la salida. Y está diseñado específicamente para que tiene un - fácil
-
para implementar en hardware y b-en un x 86, es extremadamente fácil de implementar porque
-
x 86 tiene este SSE2 conjunto de instrucciones que soporta todas las operaciones que debe hacer
-
para esta función. Es muy, muy rápido.
Como resultado, la Salsa tiene un flujo muy rápido
-
cifrado. Y luego lo hace básicamente una y otra vez. Por lo que se aplica esta
-
función h nuevamente y se obtiene otro de 64 bytes. Y así sucesivamente y así sucesivamente, básicamente
-
hace esto diez veces. Esta bien todo esto aquí, decir repite diez veces, así que
-
básicamente se aplican h diez veces. Y luego por sí mismo, esto es realmente no muy aleatorio.
-
No va a mirar al azar porque como hemos dicho, H es completamente invertable. Tan dado
-
Este resultado final, es muy fácil invertir sólo h y luego volver al original
-
entradas y luego prueba que la entrada tiene la estructura correcta. Entonces hacer uno más
-
cosa, que es básicamente XOR las entradas y las salidas finales. En realidad,
-
lo siento. No es un XOR. Es realmente una adición. Entonces hacer una palabra además
-
palabra. Así que si hay 64 bytes, no una adición de la palabra por palabra cuatro bytes en un
-
tiempo y finalmente obtener la salida de 64 bytes, y eso es todo. Eso es todo
-
generador pseudoaleatorio. Así que, es la función entera, poco h. Y como yo
-
explicó, esta construcción es la función de gran H. Y luego evaluar
-
Big h incrementando el contador desde cero, uno, dos, tres adelante. Y
-
le dará una secuencia pseudoaleatoria, siempre y cuando usted lo necesita para ser. Y
-
Básicamente, no hay ninguna signifigant ataques a este. Esto tiene la seguridad que
-
muy cerca de dos a los 128. Vamos a ver lo que significa más precisamente más tarde por.
-
Es un cifrado de flujo muy rápido, tanto en hardware como en software. Y, en cuanto
-
podemos decir, que parece ser impredecible como necesaria para un cifrado de flujo. Así que me
-
debería decir que el proyecto de eStream realmente tiene cinco cifrados en flujo como
-
esto. Elegí sólo Salsa porque creo que es la más elegante. Pero le puedo dar
-
aquí algunos números de rendimiento. Para que puedas ver, estos son números de rendimiento en un
-
2.2 gigahercios, sabes, tipo máquina x 86.
Y se puede ver que en realidad es RC4 el
-
más lento. Porque básicamente, bien no realmente toma ventaja de la
-
hardware. No sólo las operaciones de byte.
Así que hay un montón de desperdiciadas ciclos que
-
no están siendo utilizados. Pero los candidatos E-Stream, tanto Salsa y otros
-
candidato llamado Sosemanuk. Yo diría que estos son los finalistas eStream. Estos son
-
realmente cifrados en flujo que estén aprobados por el proyecto eStream. Se puede ver que
-
que han alcanzado una tasa significativa.
Se trata de 643 megabytes por segundo en este
-
arquitectura, más que suficiente para una película y estas son realmente impresionantes
-
tasas. Y ahora que has visto ejemplos de dos viejos cifrados en flujo no deberían ser
-
usa, incluidos ataques contra los cifrados en flujo.
Has visto lo que la corriente moderna de cifra
-
aspecto con este nonce. Y ver los números de rendimiento para estos
-
stream moderno de cifra por lo que si usted necesita un cifrado de flujo puede utilizar uno de
-
los finalistas eStream. En particular, se podría utilizar algo como Salsa.