Conceptos Basicos de Criptografia

10
CONCEPTOS BASICOS DE CRIPTOGRAFIA ¿Que es criptografia? Es el arte o ciencia de cifrar y descifrar información utilizando técnicas que hagan posible el intercambio de mensajes de manera segura que sólo puedan ser leídos por las personas a quienes van dirigidos. Una vez que la información ha sido encriptada, puede ser almacenada en un medio inseguro o enviada a través de una red insegura (como Internet) y aún así permanecer secreta. Luego, los datos pueden desencriptarse a su formato original ¿Qué diferencias hay entre los algoritmos simétricos y los asimétricos? Es el arte o ciencia de cifrar y descifrar información utilizando técnicas que hagan posible el intercambio de mensajes de manera segura que sólo puedan ser leídos por las personas a quienes van dirigidos. Una vez que la información ha sido encriptada, puede ser almacenada en un medio inseguro o enviada a través de una red insegura (como Internet) y aún así permanecer secreta. Luego, los datos pueden desencriptarse a su formato original ¿Qué diferencias hay entre los algoritmos simétricos y los asimétricos? Los algoritmos simétricos encriptan y desencriptan con la misma llave. Las principales ventajas de los algoritmos simétricos son su seguridad y su velocidad. Los algoritmos asimétricos encriptan y desencriptan con diferentes llaves. Los datos se encriptan con una llave pública y se desencriptan con una privada, siendo ésta su principal ventaja. Los algoritmos asimétricos, también conocidos como algoritmos de llave pública, necesitan al menos una llave de 3.000 bits para alcanzar un nivel de seguridad similar al de uno simétrico de 128 bits. Y son increíblemente lentos, tanto que no pueden ser utilizados para encriptar

Transcript of Conceptos Basicos de Criptografia

Page 1: Conceptos Basicos de Criptografia

CONCEPTOS BASICOS DE CRIPTOGRAFIA

¿Que es criptografia?

Es el arte o ciencia de cifrar y descifrar información utilizando técnicas que hagan posible el intercambio de mensajes de manera segura que sólo puedan ser leídos por las personas a quienes van dirigidos.Una vez que la información ha sido encriptada, puede ser almacenada en un medio inseguro o enviada a través de una red insegura (como Internet) y aún así permanecer secreta. Luego, los datos pueden desencriptarse a su formato original

¿Qué diferencias hay entre los algoritmos simétricos y los asimétricos?

Es el arte o ciencia de cifrar y descifrar información utilizando técnicas que hagan posible el intercambio de mensajes de manera segura que sólo puedan ser leídos por las personas a quienes van dirigidos.Una vez que la información ha sido encriptada, puede ser almacenada en un medio inseguro o enviada a través de una red insegura (como Internet) y aún así permanecer secreta. Luego, los datos pueden desencriptarse a su formato original

¿Qué diferencias hay entre los algoritmos simétricos y los asimétricos?Los algoritmos simétricos encriptan y desencriptan con la misma llave. Las principales ventajas de los algoritmos simétricos son su seguridad y su velocidad. Los algoritmos asimétricos encriptan y desencriptan con diferentes llaves. Los datos se encriptan con una llave pública y se desencriptan con una privada, siendo ésta su principal ventaja. Los algoritmos asimétricos, también conocidos como algoritmos de llave pública, necesitan al menos una llave de 3.000 bits para alcanzar un nivel de seguridad similar al de uno simétrico de 128 bits. Y son increíblemente lentos, tanto que no pueden ser utilizados para encriptar grandes cantidades de información. Los algoritmos simétricos son aproximadamente 1.000 veces más rápidos que los asimétricos.

TERMINOLOGIA

La siguiente terminología se usa frecuentemente al examinar cifrados simétricos.

Cifrados en Bloque: un bloque de cifrado transforma bloques de texto plano de n-bits a bloques de texto cifrado de n-bits bajo la influencia de una llave k. En general se asume que la llave es escogida aleatoriamente, para una llave fija, un bloque cifrado es una biyección, definiendo una permutación de vectores de n-bits. Cada llave potencialmente (pero no necesariamente) define una biyección diferente. Para mensajes de texto plano que exceden un bloque de longitud se usan varios modos de operación para cifrados en bloque.

Page 2: Conceptos Basicos de Criptografia

Cifrados de Flujo: consiste en una máquina de estados que retorna para cada transición de estado un bit de información. Este flujo de salida de bits se llama comúnmente la llave corriente. La encriptación puede ser implementada solo con darle la exclusividad de la llave corriente al mensaje de texto plano.La máquina de estados no es más que un generador de números seudo-aleatorios. Por ejemplo, podríamos construir una de un cifrado en bloque encriptando repetidamente su propia salida. Típicamente, se usan construcciones más elaboradas para cifrados de flujo para obtener una alta velocidad.

Algunos de los más bien conocidos cifrados de flujo son RC4 y SEAL. Varios cifrados de flujo se basan en registros de cambio de retroalimentación lineal (LFSR - Linear-Feedback Shift Registers), tales como A5/1 usado en GSM. Estos tienen el beneficio de ser muy rápidos (varias veces más rápidos que los cifrados en bloque usuales).

SSSC (Self-Synchronizing Stream Ciphers - Cifrados de Flujo de Sincronizado Propio): La clase de cifrados de flujo de sincronizado propio, convenientemente, tiene la propiedad de que corrige el flujo de salida después del cambio de bits o aún cuando se pierden bits después de un corto tiempo (digamos, algunos cientos de bits).Los SSSCs pueden ser construidos usando cifrados en bloque en una manera relacionada a CFB. Asuma que ya encriptamos n bits del mensaje y conocemos ese tanto del texto cifrado (donde dice n nótese la longitud del bloque del cifrado). Luego, producimos un nuevo bit de llave de arranque (ver arriba) encriptando los n bits de texto cifrado. Tomamos un bit de la salida del cifrado para que sea el nuevo bit de la llave de arranque. Ahora moviendo un bit más podemos iterar este procedimiento para toda la longitud del mensaje.

El cifrado en bloque usado debe tener un tamaño de bloque suficientemente largo para evitar ataques de substitución, por ejemplo.

Substitución y transposición: substitución significa reemplazar símbolos o grupos de símbolos por otros símbolos o grupos de símbolos. Transposición, por otro lado, significa permutar los símbolos en un bloque. Ninguna de estas operaciones por si sola provee de suficiente seguridad, pero mediante su combinación pueden ser construidos cifrados fuertes. Por una Red de Substitución-Permutación (SPN - Substitution Permutation Network), nos referimos a un cifrado compuesto de un número de etapas, cada una involucrando substituciones y permutaciones. Ejemplos bien conocidos de SPNs son DES y CAST-128.

Page 3: Conceptos Basicos de Criptografia

S-Boxes:

Tablas de búsqueda que mapean n bits a m bits (donde n y m son iguales frecuentemente). Hay varias maneras de construir buenas S-boxes para cifrados, así como varias maneras de medirlas. Algunos diseñadores usan una aproximación matemática rigurosa al usar funciones curvilíneas (o relacionadas) para crear S-boxes que puedan ser probadas como resistentes contra algunos ataques particulares. Otros diseñadores usan aproximaciones heurísticas, lo cual conduciría a que las s-boxes sean más difíciles de manejar en pruebas matemáticas, pero pueden tener beneficios adicionales (como varias opciones diferentes de implementación).La S-Box puede ser la única parte no lineal del cifrado. Este es el caso del cifrado en bloque DES, y de esta manera debe ser considerado como la parte más importante del algoritmo. De hecho, muchos consideran a las S-boxes DES tan buenas que las usan en sus propios diseños (por ejemplo, Serpent).

Redes Feistel:

Una red Feistel es una manera general de construir cifrados en bloque desde funciones simples. La idea original fue usada en el cifrado en bloque Lucifer, inventado por Horst Feistel. Muchas variaciones han sido concebidas de la versión original.

Dicho de manera sencilla, la red Feistel standard toma una función de n bits a n bits y produce una función inversa de 2n bits a 2n bits. La función básica sobre la cual se basa la estructura es llamada comúnmente de redondeo. La propiedad esencial de las redes de Feistel que las hace tan útiles en diseño de cifrados es que la función de redondeo no necesita ser invertible, pero la función resultante siempre lo es.

Si la función de redondeo depende de, digamos, k bits de una llave, entonces el cifrado Feistel requiere rk bits de la llave donde r es el número de redondeo usado.

La seguridad de la estructura Feistel no es obvia, pero análisis de DES han demostrado que es una buena manera de construir cifrados. Es obligatorio que el cifrado Feistel tenga suficientes redondeos, pero solo añadiendo más redondeos no siempre garantiza la seguridad.

La operación de tomar la llave de usuario y expandirla en rk bits para los redondeos de Feistel se llama "key scheduling". Esta operación, no siempre es lineal, por lo tanto descubrir alguno de los rk bits de las llaves de redondeo no provee de información directamente sobre la llave actual

Page 4: Conceptos Basicos de Criptografia

del usuario. Existen muchos cifrados que tienen esta estructura básica; Lucifer, DES, y Twofish, solo para nombrar algunos.

Expansión, Permutación:

Estas son herramientas comúnmente usadas en la mezcla de bits en la función de redondeo. Son operaciones lineales, por lo que no son suficientes para garantizar la seguridad. Sin embargo, cuando son usadas con buenas S-boxes no lineales (como en DES) son vitales para la seguridad ya que propagan las operaciones no lineales uniformemente sobre todos los bits.

Operaciones de "corte de bits" (operaciones lógicas XOR, AND, OR, NOT y permutaciones de bit):

La idea sobre implementaciones de operaciones de corte a cifrados en bloque se le debe a Eli Biham. Es una práctica común en máquinas de vectores realizar una operación paralela. Sin embargo, Biham lo aplicó en máquinas en serie usando registros tan grandes como los que tienen las computadoras modernas. El término "corte de bits" se le debe a Matthew Kwan.

 

Básicamente todos los cifrados en bloque pueden ser escritos a la manera de "corte de bits", pero operaciones tales como la suma y la multiplicación pueden volverse muy lentas. Por otro lado, las permutaciones casi son libres tal que solo requieren nombrar los registros nuevamente y esto puede hacerse a nivel de código. De esta manera, por ejemplo, en la búsqueda exhaustiva DES usando técnicas de "corte de bits", uno puede incrementar la llave actual en una fracción del tiempo que usualmente se necesita para "key scheduling". El finalista de AES, Serpent está diseñado para ser implementado usando solo operaciones de "corte de bits". Esto lo hace particularmente eficiente en las arquitecturas modernas con muchos registros.

TERMINOLOGIA

La siguiente terminología se usa frecuentemente al examinar cifrados simétricos.

Cifrados en Bloque: un bloque de cifrado transforma bloques de texto plano de n-bits a bloques de texto cifrado de n-bits bajo la influencia de una llave k. En general se asume que la llave es escogida aleatoriamente, para una llave fija, un bloque cifrado es una biyección, definiendo una permutación de vectores de n-bits. Cada llave potencialmente (pero no necesariamente) define una biyección diferente.

Page 5: Conceptos Basicos de Criptografia

Para mensajes de texto plano que exceden un bloque de longitud se usan varios modos de operación para cifrados en bloque.

Cifrados de Flujo:

Consiste en una máquina de estados que retorna para cada transición de estado un bit de información. Este flujo de salida de bits se llama comúnmente la llave corriente. La encriptación puede ser implementada solo con darle la exclusividad de la llave corriente al mensaje de texto plano.La máquina de estados no es más que un generador de números seudo-aleatorios. Por ejemplo, podríamos construir una de un cifrado en bloque encriptando repetidamente su propia salida. Típicamente, se usan construcciones más elaboradas para cifrados de flujo para obtener una alta velocidad.

Algunos de los más bien conocidos cifrados de flujo son RC4 y SEAL. Varios cifrados de flujo se basan en registros de cambio de retroalimentación lineal (LFSR - Linear-Feedback Shift Registers), tales como A5/1 usado en GSM. Estos tienen el beneficio de ser muy rápidos (varias veces más rápidos que los cifrados en bloque usuales).

SSSC (Self-Synchronizing Stream Ciprés:

Cifrados de Flujo de Sincronizado Propio): La clase de cifrados de flujo de sincronizado propio, convenientemente, tiene la propiedad de que corrige el flujo de salida después del cambio de bits o aún cuando se pierden bits después de un corto tiempo (digamos, algunos cientos de bits).Los SSSCs pueden ser construidos usando cifrados en bloque en una manera relacionada a CFB. Asuma que ya encriptamos n bits del mensaje y conocemos ese tanto del texto cifrado (donde dice n nótese la longitud del bloque del cifrado). Luego, producimos un nuevo bit de llave de arranque (ver arriba) encriptando los n bits de texto cifrado. Tomamos un bit de la salida del cifrado para que sea el nuevo bit de la llave de arranque. Ahora moviendo un bit más podemos iterar este procedimiento para toda la longitud del mensaje.

El cifrado en bloque usado debe tener un tamaño de bloque suficientemente largo para evitar ataques de substitución, por ejemplo.

Substitución y transposición:

Substitución significa reemplazar símbolos o grupos de símbolos por otros símbolos o grupos de símbolos. Transposición, por otro lado,

Page 6: Conceptos Basicos de Criptografia

significa permutar los símbolos en un bloque. Ninguna de estas operaciones por si sola provee de suficiente seguridad, pero mediante su combinación pueden ser construidos cifrados fuertes. Por una Red de Substitución-Permutación (SPN - Substitution Permutation Network), nos referimos a un cifrado compuesto de un número de etapas, cada una involucrando substituciones y permutaciones. Ejemplos bien conocidos de SPNs son DES y CAST-128.

S-Boxes:

Tablas de búsqueda que mapean n bits a m bits (donde n y m son iguales frecuentemente). Hay varias maneras de construir buenas S-boxes para cifrados, así como varias maneras de medirlas. Algunos diseñadores usan una aproximación matemática rigurosa al usar funciones curvilíneas (o relacionadas) para crear S-boxes que puedan ser probadas como resistentes contra algunos ataques particulares. Otros diseñadores usan aproximaciones heurísticas, lo cual conduciría a que las s-boxes sean más difíciles de manejar en pruebas matemáticas, pero pueden tener beneficios adicionales (como varias opciones diferentes de implementación).La S-Box puede ser la única parte no lineal del cifrado. Este es el caso del cifrado en bloque DES, y de esta manera debe ser considerado como la parte más importante del algoritmo. De hecho, muchos consideran a las S-boxes DES tan buenas que las usan en sus propios diseños (por ejemplo, Serpent).

Redes Feistel:

Una red Feistel es una manera general de construir cifrados en bloque desde funciones simples. La idea original fue usada en el cifrado en bloque Lucifer, inventado por Horst Feistel. Muchas variaciones han sido concebidas de la versión original.

Dicho de manera sencilla, la red Feistel standard toma una función de n bits a n bits y produce una función inversa de 2n bits a 2n bits. La función básica sobre la cual se basa la estructura es llamada comúnmente de redondeo. La propiedad esencial de las redes de Feistel que las hace tan útiles en diseño de cifrados es que la función de redondeo no necesita ser invertible, pero la función resultante siempre lo es.

Si la función de redondeo depende de, digamos, k bits de una llave, entonces el cifrado Feistel requiere rk bits de la llave donde r es el número de redondeo usado.

La seguridad de la estructura Feistel no es obvia, pero análisis de DES han demostrado que es una buena manera de construir cifrados. Es obligatorio que el cifrado Feistel tenga suficientes redondeos, pero solo añadiendo más redondeos no siempre garantiza la seguridad.

Page 7: Conceptos Basicos de Criptografia

La operación de tomar la llave de usuario y expandirla en rk bits para los redondeos de Feistel se llama "key scheduling". Esta operación, no siempre es lineal, por lo tanto descubrir alguno de los rk bits de las llaves de redondeo no provee de información directamente sobre la llave actual del usuario. Existen muchos cifrados que tienen esta estructura básica; Lucifer, DES, y Twofish, solo para nombrar algunos.

Expansión, Permutación:

Estas son herramientas comúnmente usadas en la mezcla de bits en la función de redondeo. Son operaciones lineales, por lo que no son suficientes para garantizar la seguridad. Sin embargo, cuando son usadas con buenas S-boxes no lineales (como en DES) son vitales para la seguridad ya que propagan las operaciones no lineales uniformemente sobre todos los bits.

Operaciones de "corte de bits" (operaciones lógicas XOR, AND, OR, NOT y permutaciones de bit): La idea sobre implementaciones de operaciones de corte a cifrados en bloque se le debe a Eli Biham. Es una práctica común en máquinas de vectores realizar una operación paralela. Sin embargo, Biham lo aplicó en máquinas en serie usando registros tan grandes como los que tienen las computadoras modernas. El término "corte de bits" se le debe a Matthew Kwan.

 

Básicamente todos los cifrados en bloque pueden ser escritos a la manera de "corte de bits", pero operaciones tales como la suma y la multiplicación pueden volverse muy lentas. Por otro lado, las permutaciones casi son libres tal que solo requieren nombrar los registros nuevamente y esto puede hacerse a nivel de código. De esta manera, por ejemplo, en la búsqueda exhaustiva DES usando técnicas de "corte de bits", uno puede incrementar la llave actual en una fracción del tiempo que usualmente se necesita para "key scheduling". El finalista de AES, Serpent está diseñado para ser implementado usando solo operaciones de "corte de bits". Esto lo hace particularmente eficiente en las arquitecturas modernas con muchos registros.