48
SEGURIDAD Y AUDITORÍA Criptografía: Algoritmo de encriptación IDEA, Seguridad de Redes. Algoritmos de encriptación de datos. www.softein.com

Seguridad y auditoríaEDa.pdf · o un micrófono. En general, ninguno de estos sistemas ha sido hallado lo suficientemente seguro como para ser utilizado sin adicionales en aplicaciones

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

SEGURIDAD Y AUDITORÍA

Criptografía: Algoritmo de encriptación IDEA,

Seguridad de Redes. Algoritmos de encriptación de datos.

www.softein.com

Seguridad y Auditoría

Softein 2

Índice Indice .................................................................................................................................................. 2 1. Introducción .................................................................................................................................... 4 2. Seguridad de redes ......................................................................................................................... 5

2.1. Métodos de autenticación ......................................................................................................... 5 2.1.1. Token ............................................................................................................................. 5 2.1.2. Biométrica ...................................................................................................................... 5 2.1.3. Kerberos ......................................................................................................................... 6

2.2. Riesgo de seguridad de datos en redes .................................................................................... 6 2.2.1. Software mal configurado ............................................................................................... 6

2.2.2.1. Redes Peer-to-Peer .............................................................................................. 6 2.2.2.2. Programas FTP .................................................................................................... 7 2.2.2.3. Servidores ............................................................................................................ 7

2.2.2 Snooping (Fisgón) ........................................................................................................... 7 2.2.3. Forging (Falsificación) ..................................................................................................... 7 2.2.4. Apropiación de passwords .............................................................................................. 7 2.3. Soluciones mediante Hardware ......................................................................................... 8

2.3.1. Control de acceso ............................................................................................. 8 2.4. Soluciones mediante Software .................................................................................................. 8

2.4.1. Firewalls ..................................................................................................................... 8 2.4.2.1.Firewalls a nivel de red. ......................................................................................... 8 2.4.2.2.Firewalls a nivel de aplicación. ............................................................................... 9

2.4.3. Control de los recursos de la red ................................................................................ 9 3. Encriptación de datos .................................................................................................................... 10

3.1 Cifrado de información ............................................................................................................. 10 3.1.1. Criptografía ................................................................................................................... 10

3.1.2. Hipótesis del secreto perfecto .............................................................................................. 10 3.1.3. ¿Cómo trabaja la criptografía? ............................................................................................. 11 3.1.4. Cifradores de bloque ........................................................................................................... 13 3.2. Métodos de encriptación ......................................................................................................... 14

3.2.1. DES .............................................................................................................................. 14 3.2.2. 3DES ....................................................................................................................... 15 3.2.3 RSA ......................................................................................................................... 15 3.2.4. Diffie y Hellman ............................................................................................................ 16

3.3 IDEA – International Data Encryption Algorithm ....................................................................... 16 3.3.1 Introducción .............................................................................................................. 17 3.3.2. Beneficios ..................................................................................................................... 17 3.3.3. Desventajas .................................................................................................................. 17 3.3.4. Algoritmo IDEA ............................................................................................................. 18

3.3.4.1. Ejecución ............................................................................................................ 22 3.3.5. Pruebas de benchmark ................................................................................................. 22 3.3.6. Inmunidad ..................................................................................................................... 22 3.3.8. Código fuente ............................................................................................................... 22 3.3.9. Licencias ...................................................................................................................... 22 3.3.10. Implementaciones de Hardware .................................................................................. 23

3.3.10.1 Coprocesador IDEACrypth. ................................................................................ 23 3.3.11.1 Kernel IDEACrypth. ............................................................................................ 24

3.3.11. Aplicaciones ............................................................................................................... 26 3.3.12 Ataques ....................................................................................................................... 31

4. Protección antivirus ...................................................................................................................... 33 4.1. Tipos de virus ........................................................................................................................ 33

4.1.1. El virus Zipped_Files. .................................................................................................... 34 4.2. Estrategias de protección ....................................................................................................... 34

5. Conclusiones ................................................................................................................................ 36 Anexos ............................................................................................................................................. 37

Seguridad y Auditoría

Softein 3

Anexo 1 : Código Fuente ............................................................................................................... 37 Anexo 2 .............................................................................................¡Error! Marcador no definido. Anexo 3 ......................................................................................................................................... 47 Anexo 4 .............................................................................................¡Error! Marcador no definido.

Bibliografía........................................................................................................................................ 48

Seguridad y Auditoría

Softein 4

1. Introducción

La seguridad de una red es una combinación de técnicas que aseguran un nivel de protección consistente contra los accesos no deseados. Para implementar la seguridad tendremos que proteger la red, el sistema operativo y los datos. Para eso, disponemos de la autentificación de acceso, seguridad a nivel de objeto y derechos de usuarios. Por ejemplo, NT dispone de herramientas de auditoría que nos permitirán conocer nuestros niveles de seguridad, pero tendremos que tener muy presentes los temas relativos a la seguridad cuando entran en juego las comunicaciones sobre Internet. Para estar seguro que estamos protegidos en todos los frentes, nos es necesario conocer determinadas técnicas.

La seguridad puede ser clasificada en tres diferentes áreas funcionales: seguridad a nivel de red, seguridad del sistema operativo y encriptación de datos. La Seguridad de red ofrece autenticación (verificando que el servidor de datos y que el receptor de los mismos son correctos) y verificando la integridad de la información (de forma que los datos enviados y los recibidos sean los mismos). Conseguir este nivel de seguridad a nivel de red significa haber implementado un protocolo de red, como NetBEUI o TCP/IP, ajustado a las necesidades de la red. Esos protocolos ofrecen varios niveles de seguridad, rendimiento (conseguidos reduciendo al mínimo la carga derivada de la seguridad), flexibilidad, y disponibilidad sobre múltiples plataformas. La seguridad a nivel de sistema operativo debe estar integrada con el mismo desde un principio. Si esas funciones básicas de seguridad no han sido implementadas al propio sistema operativo desde un inicio, implementarlas con posterioridad será casi imposible. Por ejemplo, Microsoft no fue capaz de implementar una seguridad seria a sus versiones de 16 bits de Windows tras su fase de desarrollo. Fue necesario un nuevo sistema operativo de 32 bits, y un nuevo modelo de programación (la API Win32) para poder hacerlo.

La Encriptación de datos. puede operar de distintas formas. Muchas aplicaciones disponen de encriptación por sí mismas. Algunos protocolos, como SSMTP (Secure Simple Mail Transfer Protocol) soportan encriptación automática. La encriptación ofrecida por terceras compañías, como PGP (Pretty Good Privacy – que incluye IDEA) también está disponible. Incluso Microsoft ha añadido un sistema de encriptación básico, CAPI (Cryptography API) a la API Win32. El objetivo de la criptografía es el de proporcionar comunicaciones seguras sobre canales inseguros, es decir, permitir que dos entidades, bien sean personas o bien aplicaciones, puedan enviarse mensajes por un canal que puede ser interceptado por una tercera entidad, de modo que sólo los destinatarios autorizados puedan leer los mensajes. Pero la criptografía no es en sí la seguridad, sólo es la herramienta básica que utilizan mecanismos más complejos para proporcionar, además de confidencialidad, otros servicios de seguridad.

Este documento tiene como tema central la criptografía y desarrolla al detalle el algoritmo IDEA.

Seguridad y Auditoría

Softein 5

2. Seguridad de redes

Cuando un computador está conectado a la red existe preocupación acerca de la seguridad de la data que se encuentre en éste: ¿Podría llegar a ser la data conocida por otros? Esta es una pregunta absolutamente válida en tanto que es relativamente simple, en muchas circunstancias, ver la información que está circulando entre las computadoras de una red, como podrían ser el resultado de exámenes, referencias, reportes confidenciales o passwords. Algo menos habitual es alguien ingresando en el computador y leyendo o cambiando data, pero también implica un riesgo. En este punto de seguridad se desarrolla lo referente a la autenticación de usuarios y a los riesgos de seguridad en redes.

2.1. Métodos de autenticación

2.1.1. Token Se requiere que el usuario disponga de un elemento físico (token, como analogía de las llaves habituales), que generalmente es una tarjeta generadora de claves de un solo uso. Una clave de un solo uso, como su nombre indica, es aquella que sólo se utiliza una vez, siendo la clave distinta para cada sesión. Tanto la tarjeta como el ordenador remoto disponen de un algoritmo de generación de claves, de forma que éstas tengan que corresponderse para autorizar el acceso.

2.1.2. Biométrica

En los últimos años el campo de la identificación biométrica se ha convertido en una alternativa aceptable para la autenticación de usuarios. La técnica de identificación biométrica es la medida u observación de una característica o acción de un ser humano a fin de identificarlo como único. Los sistemas de identificación biométrica han sido construidos basados en una variedad de técnicas, incluyendo huellas digitales, dinámica de firma manual, análisis de voz, el patrón de vasos sanguíneos en la retina, mediciones geométricas de las manos y características faciales. Una técnica de identificación biométrica puede fallar en dos formas: rechazando la identificación de un usuario legítimo (falso rechazo) o admitiendo incorrectamente un usuario ilegítimo (falsa aceptación). La mayor parte de los sistemas de identificación biométricos permiten ajustes a la tecnología a fin de controlar las probabilidades de error en algún grado. Si los sistemas se configuran para ser muy sensitivos, muchos usuarios legítimos fallarán en ser identificados. Si los sistemas se configuran para ser muy tolerantes, demasiados usuarios ilegítimos serán aceptados. Los dispositivos de reconocimiento de voz fueron señalados como los menos confiables, pero tienen una buena característica como es la de que las mediciones se pueden realizar remotamente usando un teléfono o un micrófono. En general, ninguno de estos sistemas ha sido hallado lo suficientemente seguro como para ser utilizado sin adicionales en aplicaciones de alta seguridad. Esta es un área tecnológica en rápida evolución y se espera el desarrollo de nuevos métodos en el futuro.

Seguridad y Auditoría

Softein 6

Desde un punto de vista de seguridad, algunas formas de identificación biométrica sufren de uno de los mayores problemas que tienen los passwords: pueden ser vulnerables a los ataques replay. Si un enemigo graba la voz de un usuario autorizado, puede utilizarla luego para impostarlo luego, a menos que el sistema haya sido diseñado para tener en cuenta esto.

2.1.3. Kerberos

Kerberos es un sistema de autenticación en redes de clave secreta desarrollado en el MIT en 1979, utiliza DES para encriptación y autenticación. A diferencia de un sistema de autenticación de clave pública, no produce firmas digitales: Kerberos fue diseñado para autenticar requerimientos de recursos de la red en lugar de autenticar la autoría de documentos. Kerberos provee autenticación en tiempo real en ambientes distribuidos, pero no provee para una futura verificación de documentos por terceros. En un sistema Kerberos hay un sitio diseñado en la red llamado el servidor Kerberos, el cual realiza la administración centralizada de las claves y otras funciones administrativas. El servidor mantiene una base de datos conteniendo las claves secretas de todos los usuarios, genera claves por sesión en cualquier momento en que dos usuarios deseen comunicarse con seguridad y autentica la identidad de un usuario que requiera ciertos servicios de la red. Kerberos, al igual que otros sistemas de clave secreta, requiere confiar en un tercero, en este caso el servidor Kerberos. Si el servidor estuviera comprometido, la integridad de todo el sistema podría caer. La criptografía de clave pública fue diseñada precisamente para evitar la necesidad de confiar en terceros o líneas de comunicación. Kerberos puede ser adecuado para aquellos que no necesitan las más robustas funciones y propiedades de los sistemas de clave pública.

2.2. Riesgo de seguridad de datos en redes

Los principales problemas en seguridad en redes se dan por las siguientes causas:

2.2.1. Software mal configurado

2.2.2.1. Redes Peer-to-Peer

Los sistemas de redes Peer-to-Peer tales como Macintosh AppleTalk y Windows for WorkGroups son relativamente fáciles de instalar y ofrecen resultados instantáneos. Lo que se debe considerar cuidadosamente es que mediante la habilitación de la compartición de archivos e impresoras, se habilitan archivos a cualquiera que esté usando una computadora en el grupo. Se deben evaluar las ramificaciones de habilitar esas opciones.

Seguridad y Auditoría

Softein 7

2.2.2.2. Programas FTP Un programa FTP permite recoger y enviar archivos a otra computadora, lo que es perfectamente legítimo. Lo que no se toma en cuenta es que algunos programas FTP tienen una opción en su configuración que permite a otras computadoras a conectarse mediante FTP en nuestra computadora y tener acceso a nuestros archivos aunque el programa FTP esté corriendo.

2.2.2.3. Servidores

La mayoría de los servidores que tienen cuentas establecidas, han sido diseñados con un alto nivel de seguridad intrínseca. Si de cualquier forma los privilegios del sistema operativo han sido incorrectamente configurados, los usuarios pueden tener acceso no intencional a partes sensibles de la data almacenada.

2.2.2 Snooping (Fisgón) Fundamentalmente las infracciones en la red son causadas por alguien que intencionalmente usa un software que lee todos los mensajes de la red. Estos programas que son de uso legítimo para los administradores del sistema a fin de detectar fallas, son un regalo para personas mal intencionadas. Lo que el fisgón consigue son pequeños bloques de texto en los cuales puede buscar por información sensitiva. Una instancia obvia es cuando se utiliza la computadora para accesar a otra y se envía un password a través de la red. Los fisgones pueden leer el password y utilizarlo luego para conectarse a esa cuenta. Muchos programas de login encriptan el password antes de enviarlo, por ejemplo Novell, pero FTP envía el password en texto claro y Telnet lo envía sólo ligeramente enmascarado. Un aspecto de la seguridad que frecuentemente es pasado por alto es el envío de los trabajos a la impresora. Se pueden mantener todos los archivos seguros y bloqueados todos los agujeros, pero el enviar un archivo en texto plano sobre la red a una impresora de la red puede significar para un snooper exactamente lo mismo que si se hubiera enviado a otro computador.

2.2.3. Forging (Falsificación)

Es relativamente fácil falsificar un mensaje de correo electrónico con el propósito de simular que se envía por alguien más. El método usado para prevenir esto es usar encriptación personalizada para asegurar que el mensaje ha venido de quien dice haber venido y que sólo pueda ser leído por la persona destinataria. También es posible falsificar una sesión de login mediante la grabación de una legítima y correr la grabación luego. La mayor parte de los computadores evitan esto haciendo la información dependiente del tiempo (time stamping).

2.2.4. Apropiación de passwords

Se debe estar prevenido de programas que pueden estar ocultos en máquinas comunes los que esperan hasta que alguien ejecute el procedimiento de login. El password y el nombre del usuario son grabados y archivados en un archivo oculto para ser luego recuperados. Si una máquina no está segura entonces cualquiera con acceso físico puede robar archivos o dejar programas no deseados en el computador.

Seguridad y Auditoría

Softein 8

2.3. Soluciones mediante Hardware

La política de seguridad puede tener muchos sitios y cada uno contar con sus propias redes. La política de red debe abarcar todos los objetivos de los sitios interconectados. La RFC 1244 aborda con considerable detalle la política de seguridad del sitio que lo ayude a salvaguardar los intereses de una organización Si la computadora misma no está físicamente segura, pueden ignorarse fácilmente los mecanismos de seguridad del software. En el caso de las estaciones de trabajo DOS/Windows, ni siquiera existe un nivel de contraseña de protección. Si se deja desatendida una estación de trabajo, sus discos pueden ser cambiados o si se deja en modo privilegiado, la estación estará por completo abierta. Asimismo el intruso puede parar la máquina y regresarla a modo privilegiado, y después plantar programas tipo caballo de Troya, o tomar cualquier medida para dejar el sistema abierto para ataques futuros. Por lo tanto todos los recursos de la red son importantes, como los vínculos de comunicaciones, los backbones, los host, los servidores entre otros.

2.3.1. Control de acceso

Tener muchos puntos de acceso incrementa los riesgos de seguridad de la red. Los servidores terminales pueden representar un riesgo si no están protegidos adecuadamente. Según su configuración, las líneas telefónicas pueden dar acceso tan sólo a un puerto de conexión de un solo sistema. Una línea telefónica en una estación de trabajo que ejecute software TCP/IP puede dar acceso a toda la red.

2.4. Soluciones mediante Software

2.4.1. Firewalls La firewall es el principal instrumento utilizado para la implementación de una política de seguridad de la red de una organización. En muchos casos se necesitan técnicas de mejoramiento de la autenticación, la seguridad y la privacía para aumentar la seguridad de la red o implementar otros aspectos de la política de seguridad. Hay varios métodos para construir una firewall. Las organizaciones que cuentan con talento en programación y con recursos financieros a menudo prefieren “desarrollar su propio método”. Esto se relaciona con la construcción de soluciones de firewall personalizadas para proteger la red de la organización. Si se implementa de manera apropiada, tal vez sea el método más efectivo y también el más caro.

2.4.2.1.Firewalls a nivel de red.

Firewall de subr-redes seleccionadas Es una variación los gateways de base dual y de los firewall de host seleccionado. En este tipo de red tanto la red externa no confiable como la red interna pueden tener acceso a la red aislada. Sin embargo no puede fluir tráfico entre la red externa no confiable y la red interna a través de la red aislada. El aislamiento de la red se desarrolla utilizando una combinación de routers de selección que se configuran de manera apropiada. A esa red aislada se le llama subred seleccionada.

Firewall de Host seleccionado Un host de bastión es cualquier host de firewall que resulta determinante para la seguridad de la red. El host de bastión es el host central en la seguridad de red de una organización. Debido a

Seguridad y Auditoría

Softein 9

que el host de bastión es crucial para la seguridad de la red interna, a menudo se introduce otra primera línea de defensa entre la red externa no confiable, y la red interna. La primera línea de defensa es proporcionada generalmente por un router de selección. Un host de bastión con un router de selección como primera línea de defensa, es un ejemplo en el cual sólo está configurada la interfaz de red del host de bastión, y que se encuentra conectada a la red interna. Uno de los puertos del router de selección está conectado a la red interna y otro a Internet. A este tipo de configuración se le llama gateway de host seleccionado.

2.4.2.2.Firewalls a nivel de aplicación.

Gateways de base dual El aspecto importante de los host de firewall de base dual es que se inhabilita el enrutamiento y que la única ruta entre los segmentos de red es a través de una función de capa de aplicación. Si el enrutamiento se configura mal por accidente o por diseño de modo que se habilite el envío IP, es posible que se ignoren las funciones de la capa de aplicación de las firewalls de base dual. Es importante verificar que las funciones de enrutamiento de la firewall de base dual estén inhabilitadas o , si no lo están, usted debe saber cómo inhabilitarlas. Además de inhabilitar el envío IP, usted eliminar todos los programas, utilerías y servicios de la firewall de base dual que puedan resultar peligrosos en manos de un intruso.

2.4.3. Control de los recursos de la red

Al realizar el análisis de riesgo, usted debe identificar todos los recursos que corran el riesgo de sufrir una violación de seguridad. Los recursos como el hardware son bastantes obvios para incluirlos en este cálculo, pero en muchas ocasiones se ignoran recursos tales como las personas que en realidad utilizan los sistemas. Es importante identificar a todos los recursos de la red que puedan ser afectados por un problema de seguridad. La RFC 1244 enlista los siguientes recursos de red que usted debe considerar al calcular las amenazas a la seguridad general: 1. Hardware : procesadores, tarjetas, teclados, terminales, estaciones de trabajo, computadoras personales, impresoras, unidades de disco, líneas de comunicación, servidores terminales, routers. 2. Software : programas fuente, programa objeto, utilerías, programas de diagnóstico, sistemas operativos, programas de comunicaciones. 3. Datos : durante la ejecución, almacenados en línea, archivados fuera de línea, respaldos, registros de auditoría, bases de datos, en tránsito a través de medios de comunicación. 4. Personas : usuarios, personas necesarias para operar los sistemas. 5. Documentación : sobre programas, hardware, sistemas, procedimientos administrativos locales. 6. Suministros : papel, formularios, cintas, medios magnéticos.

Seguridad y Auditoría

Softein 10

3. Encriptación de datos 3.1 Cifrado de información

3.1.1. Criptografía

“La criptografía es una alteración arbitraria y convencional de la escritura con el fin de que esta no pueda ser leída si no se conoce una clave secreta”. Con el actual crecimiento de la tecnología, la criptografía también se ha modernizado. Su principal ventaja es que faculta a los individuos a controlar su información en forma con00fidencial y anónima. Desde el siglo I a.C. se conoce la criptografía por sustitución (Cifrado César) que consiste en reemplazar una letra por otra, siendo "n” el número de letras del alfabeto, en términos matemáticos tenemos:

Yi =Xi Zi (mod n)

Donde representa la suma módulo “n”. En estos cifrados se puede observar una frecuencia de aparición de una letra del mensaje se refleja en el criptograma. Conociendo la letra de mayor frecuencia en el alfabeto usado queda automáticamente establecida la correspondencia. Luego, aparecieron otros métodos como el Vigenere (1586) donde la clave ya no es fija si no que toma sucesivamente diferentes valores sobre un conjunto de valores y el cifrado Beaufort (1710) con la particularidad de que se suma la clave con la inversa de cada símbolo del texto claro. Posteriormente en 1917, se desarrollo el cifrado Verman que emplea un alfabeto binario. La operación aritmética es una suma módulo 2 y la clave una secuencia binaria aleatoria de la misma longitud del texto original. Para recuperar el mensaje original se suma al criptograma la secuencia aleatoria ya que en la adición y sustracción coinciden en la aritmética módulo 2. Este método de cifrado fue utilizado durante la Segunda Guerra Mundial por diferentes países. Un principio claro es que la información sobre el texto original aportada por el criptograma debe ser nula. La hipótesis de Shannon indica que la longitud de la clave K tiene que ser, al menos, tan larga como la longitud del texto plano. 3.1.2. Hipótesis del secreto perfecto

Esta hipótesis señala que un algoritmo de este tipo debe cumplir dos condiciones: Que el enemigo criptoanalista sólo tenga acceso al criptograma (es decir, que sólo pueda atacar al texto cifrado) y que la clave no sea fija. Esta hipótesis considera un método de cifrado en el que el texto plano, el criptograma y la clave tomen valores de un alfabeto N-ario {0,1,2,….N-1} y en que la longitud de la clave K, el criptograma C y el texto plano M coincidan entre sí (K=C=M). En este caso el n00úmero de posibilidades es igual a Nm. Por lo tanto, si la clave se elige de manera aleatoria tenemos que :

Seguridad y Auditoría

Softein 11

P( Z=z ) = N-m (para todos los posibles Nm valores z de la clave secreta)

La transformación de cifrado es : Yi = Xi Zi (i=1,……….,N)

Si se fija una texto fuente X=x, a cada posible valor de la clave secreta Z (que tiene Nm posibles valores) le corresponde un criptograma Y (con Nm posibles valores). Por lo tanto a un mismo texto X le puede corresponder con igual probabilidad cualquiera de los Nm posibles criptogramas. Por lo tanto, la información aportada por el criptograma sobre el texto es nula.

3.1.3. ¿Cómo trabaja la criptografía?

Muchas de las transacciones que utilizan encriptación hoy en día usan una combinación de claves secretas, claves públicas, funciones Hash y certificados digitales para lograr autenticación, confidencialidad e integridad de los mensajes. Se presenta este punto resumidamente en vista que el tema central del texto se refiere a cifradores de clave secreta, específicamente el algoritmo IDEA. Una posibilidad de aumentar la protección de la información frente al criptoanálisis consistente en hacer una compresión previa de la información antes de proceder a su cifrado. Las funciones Hash son valores fijos derivados matemáticamente de un mensaje en texto. Tanto el emisor como el receptor tiene una clave privada conocida sólo por ellos y una clave pública que puede ser conocida por todos. Un certificado digital, firmado por la persona autorizada, valida las claves públicas del que envía y el que recibe. Veamos como es el proceso utilizando estos conceptos: 1. Un código pre-hash se deriva matemáticamente del mensaje a ser enviado.

2. El código pre-hash se encripta usando la clave privada del que envía.

3. El código pre-hash y el mensaje se encriptan usando la clave secreta.

4. El que envía obtiene la clave pública del destinatario y verifica la autenticidad de su certificado digital.

Seguridad y Auditoría

Softein 12

5. El que envía encripta la clave secreta con la clave pública del receptor de tal manera que sólo el receptor puede desencriptar con su clave privada.

La desencriptación sigue esencialmente el mismo proceso pero a la inversa. 1. El que recibe usa su clave privada para desencriptar la clave secreta.

2. El que recibe usa la clave secreta para desencriptar el mensaje encriptado y código

pre-hash.

3. El que recibe obtiene la llave pública del que envía y verifica su certificación mediante

una autorización de certificado.

4. El que recibe usa la clave pública del que envía para desencriptar el código pre-hash.

Esto verifica la identidad del que envía.

5. El que recibe genera un post código hash a partir del mensaje

Seguridad y Auditoría

Softein 13

6. El código post hash se iguala al pre hash. Esto verifica que el mensaje no fue re-

enrutado (verifica su ruta)

3.1.4. Cifradores de bloque

La mayoría de los cifradores más comunes como IDEA y DES son cifradores de bloque. Esto significa que éstos toman un bloque de datos de tamaño fijo, generalmente de 64 bits, y lo transforman en otro bloque de 64 bits usando una función seleccionada por la clave. El cifrador básicamente define una mapeo de uno a uno para enteros de 64 bits a otra permutación de enteros de 64 bits. . Un cifrador de bloque puede trabajar con el método ECB (Electronic Code Block) que consiste en que si un bloque es encriptado dos veces con la misma clave, el resultado siempre será de bloques cifrados idénticos. Por lo tanto es más conveniente que el resultado sean diferentes bloques cifrados para lo cual existen dos métodos: Modo CFB, donde un bloque cifrado se obtiene encriptando el bloque cifrado previo

y aplicando Xor (xoring) al valor resultante con el texto plano.

Modo CBC, un bloque cifrado se obtiene primero aplicando xoring al bloque de texto plano con el bloque cifrado previo y encriptando el valor resultante.

El bloque cifrado previo generalmente se guarda en un IV (Inicialization Vector) usando un vector cero para el primer bloque. La permutación efectuada durante la encriptación es naturalmente secreta, por ello es una función de llave secreta. Todos los cifradores de bloque se componen de cuatro elementos : 1. Transformación inicial. 2. Una función iterada “n” rounds o vueltas. 3. Transformación final. 4. Algoritmo de expansión de la clave. La transformación inicial, puede tener una o dos funciones para “aleatorizar los datos de entrada” (para ocultar los bloques de todos ceros o unos) y la segunda, presente en IDEA, con significación criptográfica, dificultando los ataques por ser una función de la clave. En general, estos cifradores trabajan por rounds. En cada round la misma transformación se aplica a los datos usando una sub-llave. Esta transformación consiste en una función no lineal complicada de los datos y la clave que no es unidireccional en el caso de IDEA. El número de rounds depende del nivel de seguridad deseado y su consecuente impacto en la performance.

Seguridad y Auditoría

Softein 14

La función no lineal puede estar formada por una sola operación muy compleja o por la sucesión de varias transformaciones simples. Las vueltas intermedias se enlazan por sumas módulo 2 bit a bit con los datos de la transformación inicial o de las vueltas precedentes. La transformación final sirve para que las operaciones de encriptación y desencriptación sean simétricas.

3.2. Métodos de encriptación

En esta sección se explica brevemente algunos de los algoritmos más conocidos.

STANDARD TIPO TAMAÑO

DE LA LLAVE

DESCRIPCION

3DES Privado 40, 56 bits Triple DES, usa dos o tres llave y múltiples rounds.

DES Privado 40, 56 bits Digital Encryption Standard.

DSA Firma Digital 1024 bits Algoritmo de firma digital , genera firmas digitales basándose en el

documento original para asegurarse que el documento no sea alterado.

ECC Público 160 bits Elliptical curve cryptography, produce el equivalente en seguridad a 1024 bits de clave RSA en con sólo 60 bits.

IDEA Privado 128 bit International data encryption algorithm, genera llaves que sólo se usan por única vez, es usado en PGP (pretty good privacy)

RSA Público 512 to 2048 bits

Rivest-Shamir-Adelman, el más popular de los algoritmos de clave pública, se recomienda un mínimo de 1024 bits de longitud de llave.

Skipjack Privado 80 bits

Clasificado mucho tiempo como secreto por el gobierno USA. Es el algoritmo simétrico con claves de 80 bits desarrollado por la NSA para los famosos chips Clipper. Recientemente, ha sido desclasificado.

3.2.1. DES

En 1974, IBM presentó un propuesta (inspirada en su sistema propietario LUCIFER) al NBS (National Bureau of Standars, USA) que luego se convertiría en el Data Encryption Standard – DES. El DES es un algoritmo de cifrado en bloque; la longitud del bloque es de 64 bits (ocho símbolo ASCII); la longitud de la clave es de 56 bits, lo que significa que existe :

256 = 7.2 * 10 16 claves diferentes.

La norma exige que el DES se implemente en hardware en un circuito integrado electrónico (FIPS). En 1981 , el ANSI adoptó el DES con el nombre de Data Encryption Algorithm (DEA). El DES trabaja alternativamente sobre dos mitades del bloque a cifrar. Primero se hace una permutación inicial fija (sin valor criptográfico). Luego se divide el bloque en dos mitades (izquierda y derecha). A continuación se realiza una operación

Seguridad y Auditoría

Softein 15

modular que se repite 16 veces; esta operación consiste en sumar módulo 2 la parte izquierda con una transformación g(k1) de la parte derecha, gobernada por una clave k1. Después se intercambian las partes izquierda y derecha. En la vuelta 16 se omite el intercambio pero el algoritmo termina con una permutación final que es la inversa de la inicial.

Aunque el DES maneja claves de 64 bits, hay que tener en cuenta que la primera operación que realiza es su reducción a 56 bits, eliminando un bit de cada ocho.

3.2.2. 3DES

El único procedimiento para aumentar el espacio de claves de un cifrado en bloque consiste en hacer un cifrado múltiple, también denominado supercifrado en medio militares. Consiste en una repetición del cifrado n veces usando n claves independientes. Aparentemente la seguridad aumenta, pero se puede demostrar que la longitud efectiva de la clave en bits es aproximadamente :

L= 56 * (n / 2) bits

En vez de 56 * n. Si el cifrado forma un grupo algebraico, en caso de haber dos operaciones de cifrado sucesivas con dos claves diferentes sería equivalente a hacer un solo cifrado con una tercera clave. Si el cifrado forma un grupo, el cifrado múltiple resulta inútil. (no es el caso de DES).

3DES no llega a ser un cifrado múltiple porque todas las subclaves no son independientes.

3.2.3 RSA

A mediados de los 70, se introdujo el nuevo concepto de claves públicas en los sistemas de encriptación. En este tipo de algoritmo cada persona puede tener una clave pública conocida por todos. Sólo las claves de desencriptación son secretas y sólo el que recibe el mensaje puede desencriptarlo, esto no permite que un intruso pueda encontrar la clave de desencriptación sin una gigantesca cantidad de trabajo (de varios millones de años). La clave pública y la privada están compuestas por un exponente y un módulo que es producto de dos números primos grandes. La fiabilidad del sistema se basa en que si los primos se escogen lo suficientemente grandes, el proceso

DES DES DES

Clave L1 Clave L2

X

Y

Seguridad y Auditoría

Softein 16

de factorización del producto es inabordable en un tiempo razonable, gracias a ello, la difusión de la componente pública no pone en peligro a la privada. El algoritmo de cifrado RSA es reversible, es decir, además de permitir cifrar con la clave pública y descifrar con la privada, permite cifrar con la clave privada y descifrar con la pública. Este modo de cifrado no proporciona confidencialidad ya que cualquiera puede descifrar un mensaje cifrado con una clave secreta al poder obtener siempre la componente pública de su interlocutor, sin embargo el hecho de cifrar un mensaje con la clave secreta de un usuario implica una identificación del usuario al igual que lo hace una firma, por lo que este proceso se conoce con el nombre de firma digital. RSA también es conocido como un sistema de encriptación y autenticación que usa el algoritmo desarrollado en 1977 por Ron Rivest, Adi Shamir, and Leonard Adleman. El algoritmo es parte de navegadores Web como Netscape. Es también parte de Lotus Notes, Intuit’s Quicken y otros productos.

Comparado el RSA con DES, según información del año 98, se ha determinado que en software DES es 100 veces más rápido y entre 1000 y 10000 veces más rápido en hardware. Sin embargo, a pesar de esta diferencia, el criptosistema RSA (y otros de clave pública) se utiliza porque permite el uso de firmas digitales en los mensajes que se envían. Como RSA es bastante lento en su ejecución, generalmente se usa con DES del siguiente modo : en primer lugar el usuario A encripta el mensaje K con el criptosistema DES mediante una clave aleatoria y a continuación la clave DES utilizada se encripta con el criptosistema RSA. Posteriormente, A envía por el canal inseguro la pareja formada por el mensaje encriptado mediante DES y al clave de DES encriptada con RSA. Para recuperar el mensaje recibido, el usuario B desencripta la clave DES mediante su clave privada del RSA y luego usa la clave obtenida para desencriptar el mensaje K.

3.2.4. Diffie y Hellman

En 1976 Diffie y Hellman describieron el primer criptosistema de clave pública conocido como el cambio de clave Diffie-Hellman que utilizaba una clave doble compuesta por una componente pública y una privada. Con este algoritmo cuando alguien quiere que le envíen un mensaje secreto le envía a su interlocutor su clave pública, el cual la usa para cifrar el mensaje. Sólo el usuario que está en posesión de la componenete secreta de la clave puede descifrar el mensaje. Si el mensaje es interceptado, aunque el intruso conozca la componente pública utilizada, no podrá descifrar el mensaje porque no estará en posesión de la componente privada. Con este tipo de algoritmos la clave secreta ya no tiene que transmitirse entre los interlocutores y tampoco es necesario tener claves diferentes para cada pareja de interlocutores, es suficiente con que cada usuario tenga su clave doble con componente pública y privada.

3.3 IDEA – International Data Encryption Algorithm

Seguridad y Auditoría

Softein 17

3.3.1 Introducción

Es un relativamente nuevo algoritmo de encriptación por bloques cuyas siglas significan “Algoritmo Internacional de Cifrado de Datos” - International Data Encryption Algorithm, creado en 1992 por Xuejia Lai y James L. Massey y ASCOM en el Swiss Federal Institute Of Technology - Zurich Suiza. IDEA es un cifrador de bloque simétrico universalmente aplicable que protege data en transmisiones y data almacenada contra accesos no autorizados. IDEA opera con bloques de 64 bits empleando una llave de 128 bits (el doble del DES).

IDEA es uno de los cifradores por bloque más robustos disponible públicamente y “el único motivo de duda posible es que al ser un algoritmo reciente cabe la posibilidad que sea vulnerable ante alguna nueva técnica de factorización aún no descubierta” 1(1993).

Los criterios fundamentales para el desarrollo de IDEA fueron : requerimientos de seguridad cada vez mayores, especialmente en aplicaciones comerciales y una fácil implementación en hardware y software. IDEA se encuentra en el registro ISO/IEC para algoritmos de encriptación y ha sido incorporado la lista del Security Guide Lines por UNI-EDIFACT Security Joint Working Group. IDEA se usa en la implementación de aplicaciones EDI (Electronic Data Interchange). IDEA está patentado por ASCOM-Tech en los Estados Unidos y en la mayoría de los países europeos, siendo su uso no comercial gratuito. IDEA se considera inmune al criptoanálisis diferencial.

3.3.2. Beneficios

Puede ser económicamente implementado en componentes electrónicos como el

chip VLSI (Very Large Scale Integration chip) que son chips de seguridad para comercio electrónico, cable modems, transmisión de datos satelital, voz y video.

Está completamente especificado y es fácil de entender. Brinda un alto nivel de seguridad basado en la clave secreta y no en lo

desconocido del algoritmo. Está disponible para todos. Puede ser implementado en gran número de aplicaciones. Se considera hasta el momento inmune a ataques por criptoanálisis diferencial.

3.3.3. Desventajas

Algunas operaciones aritméticas usadas en IDEA no son rápidas para su ejecución en software.

Seguridad y Auditoría

Softein 18

3.3.4. Algoritmo IDEA

IDEA opera con textos planos de 64 bits y bloques de texto cifrados y es controlado por una llave de 128 bits. La seguridad de IDEA y la innovación fundamental en el diseño del algoritmo es el uso de de tres tipos diferentes e incompatibles de operaciones aritméticas sobre palabras de 16 bits.

La estructura del algoritmo usa diferentes sub-bloques llave (Zn en el diagrama 1). El proceso de encriptación consiste de ocho vueltas de encriptación idénticas (conocidos como rounds de encriptamiento) seguidos por una transformación de salida. Durante el proceso de encriptación se utilizan los siguientes grupos aritméticos : 1- Grupo multiplicativo en el cuerpo Z 216+1. (Multiplicación) 2- Grupo aditivo Z 216. (Adición) 3- Grupo aditivo Z 2 bit a bit. (Xor) Todas estas operaciones son incompatibles entre sí. La estructura del primer round se muestra en detalle. El bloque de 64 bits de texto plano es particionado en cuatro sub-bloques de 16 bits, hasta que todas las operaciones algebraicas usadas en el proceso de encriptación operen a 16 bits. Otro proceso, que se describe más abajo, produce seis sub-bloques de la llave de 128 bits para cada round de encriptación. Los cuatro bloques de 16 bits son requeridos para una siguiente transformación, un total de 52 ( 8x6 +4) bloques de 16 bits serán generados a partir de la llave de 128 bits. En el primer round de encriptación, el primer grupo de cuatro bloques de 16 bits es combinado con: dos de los bloques de texto plano de 16 bits usando un módulo de adición 2 ˆ(16), y con los otros dos bloques de texto plano de 16 bits usando un módulo de multiplicación 2ˆ(16 +1). Los resultados son procesados más adelante como se muestra en el diagrama. Luego dos sub-bloques más de 16 bits ingresan al cáculo y el tercer operador grupal algebraico, el bit por bit OR exclusivo, es utilizado. Al final del primer round de encriptación cuatro valores de 16 bits son producidos y estos son utilizados como entrada al segundo round de encriptación en un orden parcialmente alterado. El proceso arriba descrito para el primer round es repetido en cada uno de los subsecuentes siete rounds de encriptación usando diferentes sub-bloques de 16 bits para cada combinación. Durante la subsecuente transformación de salida, los cuatro valores de 16 bits producidos al final del 8vo. round de encriptación son combinados con los últimos cuatro de los 52 sub-bloques usando el módulo de adición 2ˆ16 y el módulo de multiplicación 2ˆ(16 +1) para formar los cuatro bloques de texto cifrados de 16 bits. Debe notarse que en ningún punto del proceso de encriptación se usa el mismo grupo de operaciones algebraicas contiguamente. Una característica especial de la multiplicación de dos sub-bloques de 16 bits módulo 2ˆ(16 +1) es que un sub-bloque de 16 bits que consiste de puros 0 bits, no es interpretado como un cero sino como

Seguridad y Auditoría

Softein 19

2ˆ16 (65536). La multiplicación por cero siempre produce cero y no es invertible. La multiplicación por cero tampoco es invertible cada vez que sea por un número que no es primo relativo de n. La multiplicación usada en IDEA debe ser invertible siempre. (al desencriptar los bloques que fueron multiplicados son reemplazados por su inverso multiplicativo módulo 65537 – Teorema de Euclides ver Anexo 3).

Generación de sub-keys Los 52 sub-bloques de 16 bits generados a partir de una llave de 128 bits se

producen de la siguiente manera :

Primero, la llave de 128 bits es particionada en 8 sub-bloques de 16 bits que se usan directamente como los primeros sub-bloques llave. Luego, la llave de 128 bits es cíclicamente cambiada hacia la izquierda 25 posiciones, luego de esto el bloque de 128 bits resultante es nuevamente particionado en 8 sub-bloques de 16 bits que serán usados directamente como los siguientes 8 sub-bloques llave. El procedimiento de cambio cíclico descrito es repetido hasta que cada uno de los 52 sub-bloques de 16 bits sean generados. Para desencriptar el procedimiento es esencialmente el mismo que se usó para encriptar el texto plano. La única diferencia comparada con la encriptación es que durante la desencriptación se generan diferentes sub-bloques de 16 bits. Es decir, cada uno de los 52 sub-bloques usados en la desencriptación es el inverso del sub-bloque usado en la encriptación con respecto al grupo algebraico de operaciones aplicado. Adicionalmente, los sub-bloques llave deben ser usados en orden inverso durante la desencriptación para revertir el proceso de encriptación. Como el algoritmo no tiene una estructura Feistel (esta es una característica especial de IDEA) la desencriptación se lleva a cabo de la misma manera que la encriptación toda vez que las sub-llaves de desencriptación son calculadas a partir de las sub-llaves de encriptación. La estructura Feistel, también llamada tipo DES, es una clase especial de cifrador donde el texto cifrado se calcula a partir del texto plano por la aplicación repetitiva de la misma transformación o round.

Descripción práctica

Llámese a los cuatro bloques de texto como : A, B, C y D. Llámese a las 52 llaves Z1,Z2,……Z52. Se multiplica (módulo 216+1) al bloque A con Z1 (A1.) Se suma (módulo 216) al bloque B con Z2. Se multiplica (módulo 216+1) al bloque C con Z3. (C1.) Se suma (módulo 216) al bloque D con Z4. Luego se calcula, A Xor C que será igual a E y

Seguridad y Auditoría

Softein 20

B Xor D que será igual a F. Luego, Se multiplica (módulo 216+1) a E por Z5. El nuevo valor de E (E1) se adiciona (módulo 216) a F (F1). Se multiplica (módulo 216+1) a F1 por Z6. (el nuevo valor será F2) F2 se suma (módulo 216) con E1 y se obtiene un nuevo valor E2. A continuación, se intercambia A1 y C1 aplicando Xor con el valor actual de F, es decir, F2 con cada uno. A continuación, se intercambia B1 y D1 aplicando Xor con el valor actual de E, es decir, E2 con cada uno.

Intercambiar B1 y C1.

El proceso se repite siete veces más, usando las llaves 7-12 para el segundo round y hasta usar las llaves 43-48 para el octavo round. Para terminar : Se multiplica (módulo 216+1) al bloque A con Z49. Se suma (módulo 216) al bloque B con Z50. Se suma (módulo 216) al bloque C con Z51. Se multiplica (módulo 216+1) al bloque D con Z52.

Seguridad y Auditoría

Softein 21

Seguridad y Auditoría

Softein 22

3.3.4.1. Ejecución

Ver Anexo 2.

3.3.5. Pruebas de benchmark

Los siguientes resultados de performance han sido obtenidos en las pruebas del algoritmo IDEA implementado en el código C proporcionado por ASCOM.

VAX 8650 430 kbits/second 486DX2-66 1'700 kbits/second Pentium, 90 MHz 4'600 kbits/second PentiumPro, 180 MHz 16'000 kbits/second

La performance de DES simple para PentiumPro, 180 MHz resultó en 5'500 kbits/second, lo que equivale a la tercera parte de la velocidad del IDEA.

3.3.6. Inmunidad

IDEA se considera inmune al criptoanálisis diferencial. Además no hay registrados ataques por criptoanálisis sobre IDEA y no presenta debilidades algebraicas conocidas. El resultado del criptoanálisis más significativo es el de Daemen que descubrió una gran clase de 251 llaves débiles para las cuales el uso de la misma llave durante la encriptación puede ser detectada fácilmente y la llave descubierta. Sin embargo, desde que hay 2128 (1038) posibles llaves el resultado no tiene impacto sobre la seguridad del cifrador. IDEA es considerado como un algoritmo muy seguro y tanto el desarrollo del cifrador y sus bases teóricas han sido ampliamente discutidas.

3.3.8. Código fuente

Ver Anexo 1.

3.3.9. Licencias

El algoritmo IDEA™ ( International Data Encryption Algorithm) se encuentra protegido por las leyes internacionales de copyright y ha sido además patentado en varios países, Ascom Systec Ltd. ('ASCOM') tiene todos los derechos relevantes en relación al algoritmo incluyendo las patentes. Debido a que Ascom Ltd. desea que este algoritmo esté disponible, el uso no comercial del mismo es libre. Si alguien desea comercializar un producto que incluya el algoritmo IDEA necesita una licencia de Ascom en USA, Japón, Austria, Francia, Alemania, Italia, España, Suiza, Suecia, Reino Unido y los Países Bajos.

Seguridad y Auditoría

Softein 23

3.3.10. Implementaciones de Hardware

El coprocesador IDEACrypt que implementa el algoritmo IDEA a velocidades de hasta 300 Mbit/s, ha sido diseñado y simulado y está listo para ser moldeado en silicón. De acuerdo a lo publicado por Ascom, debe estar pronto disponible en el mercado. Para aplicaciones que combinan el algoritmo IDEA con otras funcionalidades tales como compresión de datos, se encuentra disponible una descripción VHDL del IDEACrypt Kernel para diseño de componentes de propósito especial que incorporan el algoritmo IDEA.

3.3.10.1 Coprocesador IDEACrypth.

El IDEACrypt es un poderoso chip criptográfico diseñado para facilitar la implementación de sistemas de seguridad. Está basado en el algoritmo IDEA, soporta todos los modos comunes de operación para cifradores de bloque (ECB, CBC, CFB, OFB) y también puede ser configurado como un generador de flujo de keys para cifradores de flujo y para cálculo MAC. Soporta una interface directa con las siguientes familias de microprocesadores : •Intel i960 •Intel 80xx •Motorola 683xx •MPC 860

Administración de la Key.- El chip IDEACrypt provee almacenamiento para 32 keys. Las keys son almacenadas en una RAM que puede ser bufereada para retención de key cuando el chip se encuentre en modo power-down. Las keys están protegidas y no pueden ser leídas fuera del chip.

Las keys pueden ser diseñadas ya sea como master keys o session keys. Las master keys son siempre cargadas por el puerto C. En un ambiente de key master-session las session-keys encriptadas son cargadas vìa el puerto A, desencriptadas bajo la master key y almacenadas en la RAM de keys. En un ambiente de administración de keys asimétricas, la session key desencriptada (por ejemplo, luego de ser desencriptada con RSA) es cargada vía el puerto C. La administración de keys es controlada vía el registro de control de keys.

•PC : encriptación de archivos y datos almacenados en el disco. •Comercio electrónico, aplicaciones financieras. •Pay TV •Redes de telecomunicaciones : ATM, SONET •Redes de computadoras : Routers, Firewalls, WAN, LAN •Cable modems de alta velocidad •Comunicación segura a alta velocidad

Seguridad y Auditoría

Softein 24

Diagrama de bloque

3.3.11.1 Kernel IDEACrypth.

El IDEACrypt kernel implementa el algoritmo IDEA como un núcleo ASIC integrado, implementando encriptación y desencriptación de datos en todos los modos de cifrado comunes y programación de keys.

Aplicaciones

El IDEACrypt kernel puede ser usado en PLDs o ASICs para las siguientes aplicaciones :

• PC : encriptación de archivos y datos almacenados en el disco. • Comercio electrónico, aplicaciones financieras. • TV digital • Redes de telecomunicaciones : ATM, SONET • Redes de computadoras : Routers, Firewalls, WAN, LAN • Cable modems de alta velocidad • Comunicación segura a alta velocidad

Seguridad y Auditoría

Softein 25

El IDEACrypt kernel consiste de:

• El motor IDEA implementando el IDEA pipeline y los modos de encriptación • El programador de keys para todas las tareas de programación de keys. • El input FIFO y output FIFO para intermediación de datos • El registro del puerto C para cargar keys • EL IDEA control para propósitos de control.

Diagrama de bloques

Código VHDL

Todo el IDEA kernel está implementado en código sintetizable VHDL. El código está organizado jerárquicamente mediante el uso de instancias de componentes. Para cada componente existe un archivo, el cual contiene la declaración de la entidad y el cuerpo de la arquitectura del componente. Adicionalmente, existe un archivo con el paquete IDEA , el cual contiene todas las constantes globales y definiciones de tipo, y que son usadas en todos los otros archivos. Todas las simulaciones son descritas como bancos de prueba VHDL.

Seguridad y Auditoría

Softein 26

3.3.11. Aplicaciones

IDEA y PGP

PGP cuyas iniciales corresponden a Pretty Good Privacy, lo que puede traducirse como Privacidad Bastante Buena. Fue elaborada por Phil Zimmerman para abordar el tema de la encriptación de archivos de clave pública o asimétrica y de las firmas digitales. Zimmerman tomó los protocolos de criptosistemas y criptografía existentes y desarrolló un programa que puede correr en múltiples plataformas. La PGP constituye una forma sólida de protección criptográfica de la que antes no se disponía y que se utiliza para proteger correo electrónico, archivos y documentos con firma digital; está disponible en forma comercial y no comercial. Los algoritmos usados para la encriptación de mensajes son el RSA para transportar la clave y el IDEA para una encriptación voluminosa de los mensajes. Las firmas digitales son conseguidas por medio de RSA y el MD5 para computar el mensaje digerido.

EDI IDEA™ ha sido ingresado en el registro ISO/IEC para algoritmos de encriptación e incorporado en la lista de códigos "SECURITY GUIDE LINES" del UNI / EDIFACT "SECURITY JOINT WORKING GROUP", por lo que IDEA™ permite la implementación de aplicaciones estándar de Electronic Data Interchange. En el Internet Draft del Internet Engineering Task Force (IETF) correspondiente al 29 de Marzo de 1999 se trata la incorporación del algoritmo IDEA en S/MIME (Secure/Multipurpose Internet Mail Extensions) [SMIME2, SMIME3] (Ver Anexo 4). El estándar S/MIME provee en forma consistente de la manera de enviar y recibir data MIME segura. Los servicios de seguridad de la información se implementan sobre la base de un conjunto de funciones criptográficas. Es por eso que las firmas digitales son utilizadas para asegurar autenticación, no repudiación del origen e integridad de la data, mientras que la encriptación de la data es utilizada para garantizar seguridad y privacidad. La adición que se plantea en S/MIME sería de IDEA en modo CBC con la longitud de la key en 128. El vector de inicialización se propone como opcional.

Teléfonos móviles

A mediados de 1998 los algoritmos COMP128 y A3A8 utilizados en teléfonos celulares fueron rotos por los hackers. Los fabricantes de teléfonos móviles y proveedores de telecomunicaciones decidieron utilizar IDEA para la identificación del usuario en el sistema. Virus IDEA.6155

IDEA.6155 es un virus polimórfico con 3 capas de encriptación. La primera capa es desencriptada mediante FSE (motor de mutación). El segundo desencriptador no contiene la clave de la desencriptación, pero usa ataque de fuerza bruta a fin de poder desencriptar esta capa. Finalmente, el tercer desencriptador está utilizando IDEA.

Seguridad y Auditoría

Softein 27

Soluciones ASCOM IDEA@S/API Es la interface a funciones de seguridad orientadas a procesos para aplicaciones en los campos de groupware, workflow systems y administración de documentos. Esto hace posible firmar resultados y documentos que son parte del proceso del negocio, utilizando una firma digital que cumple con las especificaciones de las leyes alemanas, y almacenar y distribuir información en forma segura.

Para la generación y administración de las keys de seguridad IDEA@S/API utiliza la infraestructura de clave pública IDEA@PKI. Soporta los protocolos PGP y S/MIME y utiliza el estándar X.509. La encriptación se basa en el algoritmo IDEA.

Diagrama de bloques de la inteface de seguridad IDEA@S/API

IDEA@explorer IDEA@explorer es la solución para el almacenamiento seguro de archivos en forma local o distribuida al permitir a los usuarios individuales o grupos de trabajo verificar la autenticidad y asegurar la confidencialidad de documentos sin complicar el proceso de trabajo.

Utiliza el file manager del MS-Explorer, permitiendo al usuario trabajar en su ambiente acostumbrado, ya que las funciones de seguridad se integran en los procedimientos existentes del MS-Explorer.

Seguridad y Auditoría

Softein 28

IDEA@explorer utiliza el algoritmo IDEA para la encriptación y la infraestructura de clave pública IDEA@exchange PKI. IDEA@exchange

IDEA@exchange adiciona un nivel de seguridad más alto al Microsoft Exchange al proveer mayor fortaleza en la autenticación y utilizando el algoritmo IDEA en la encriptación. Una sofisticada infraestructura de administración de claves permite la simplicidad en las operaciones del usuario y del administrador.

Seguridad y Auditoría

Softein 29

Arquitectura IDEA@exchange

Seguridad y Auditoría

Softein 30

Mail Client IDEA@exchange

Seguridad y Auditoría

Softein 31

Certification Authority IDEA@exchange

IDEA@exchange utiliza el algoritmo IDEA para la encriptación, RSA con una longitud de key seleccionable entre 512/768/1024/2048 bits, el algoritmo hash MD5 y un generador random de números de alta seguridad. IDEA@outlook

Es una solución multiprotocolo de seguridad para E-mail, diseñada específicamente para ser usada en compañías grandes y medianas. Soporta los protocolos de seguridad S/MIME, PGP e IDEAsecure, lo que permite el intercambio seguro de información entre socios externos e internos, es decir, dentro de la organización y a través de Internet.

3.3.12 Ataques

IDEA es un cifrador de bloque cifrado diseñado para resistir todas las formas de criptoanálisis publicadas hasta el momento. Excepto para algunas condiciones especiales de las “llaves débiles”, las 8 vueltas de IDEA son aparentemente muy fuertes contra los ataques diferenciales, lineales, y todos aquellos relacionados con llaves elegidas.

Seguridad y Auditoría

Softein 32

Ataques por fuerza bruta

Llamada también búsqueda exhaustiva de la llave. Es la técnica básica para tratar cada llave posible de llevarla hacia la llave correcta. Para identificar la llave correcta es necesario tener un texto plano y su correspondiente texto cifrado, de lo contrario si el texto plano tiene algunas características reconocibles el texto cifrado solo podría ser suficiente. Entonces se inicia una búsqueda de la llave sobre el cifrado y algunas veces una debilidad en las llaves del cifrado pueden ayudar a mejorar la eficiencia del ataque por una búsqueda exhaustiva. Meir criptoanalizó 2 vueltas o rounds de IDEA en una especie de ataque diferencial usando una ley parcial distributiva. Daemen encontró grandes clases de claves débiles para IDEA y también describió un ataque de 2.5 vueltas de IDEA para todas las llaves.

Debido a las carácterísticas mencionada y la longitud de su clave (128 bits), IDEA no

ha podido ser vulnerado hasta la fecha por fuerza bruta.

Supongamos que un ordenador puede probar un millón de claves por segundo. Este computador trabajando solo necesitaría 2285 años para encontrar una clave correcta de 56 bits, si la clave es de 128 bits necesitaría 1025 años. La edad del universo se estima de 1010 años.

El criptoanálisis diferencial Es un tipo de ataque que puede estar basado en los bloques cifrados iterativos. Estas técnicas fueron introducidas por Murphy cuando realizó un ataque al algoritmo FEAL-4 y que más tarde fueron mejoradas y perfeccionadas por Biham y Shamir quienes lo usaron para atacar al DES. El criptoanálisis diferencial es básicamente un ataque a un texto plano elegido y recae sobre el análisis de la evolución de las diferencias entre dos textos planos relacionados sobre cómo son encriptados bajo la misma llave. A través de un análisis cuidadoso de los datos disponibles, las probabilidades puede ser asignadas a cada una de las llaves posibles y eventualmente la llave más probable es identificada como la correcta. El criptoanálisis diferencial ha sido usado contra una gran variedad de cifrados obteniendo diferentes grados de éxito. También ha sido útil en los ataques a otros algoritmos criptográficos tales como las funciones hash.

El Criptoanálisis lineal Fue elaborado por primera vez por Matsui a Yamagishi en un ataque a FEAL. Luego fue alcanzado por Matsui para atacar a DES. El criptoanálisis lineal es un ataque conocido a un texto plano y usa una aproximación lineal para describir el comportamiento de un cifrado de bloque. Dado unos pares suficientes de texto plano y su correspondiente texto cifrado, bits de información acerca de la llave pueden ser obtenidos e incrementados la cantidad de datos lo cual nos dará una probabilidad alta de éxito. Por lo tanto ha habido una variedad de alcances y mejoramientos al ataque básico. Langford y Hellman introdujeron un ataque llamado criptoanálisis diferencial-lineal el cual combina elementos del criptoanálisis diferencial con los del criptoanálisis lineal. También, Kaliski y Robshaw mostraron que un ataque con criptoanálisis lineal que usa múltiples aproximaciones debe permitir una reducción en la cantidad de datos requeridos para un ataque exitoso. Otros ejemplos tales como los cifradores de

Seguridad y Auditoría

Softein 33

protección contra el criptoanálisis lineal han sido considerados por Nyberg, Knudsen y O’Conner.

Ataques por criptoanálisis side-channel

El criptoanálisis side-channel o criptoanálsis indirecto, incluye ataques basados en el tiempo que toma el cifrado, el consumo de energía, etc. No van hacia las propiedades matemáticas del algoritmo. El ataque puede darse de la siguiente manera. Cuando una operación módulo 216 se efectúa, un operador cero es tratado como un caso especial. El tiempo (timing), el consumo de energía, la radiación, etc. será diferente si una entrada es cero.

El mecanismo básico utilizado en estos ataques consiste consiste en encontrar uno o

dos de los valores de 16 bits que indiquen una entrada cero en algún producto en algún lugar.

El tiempo que tarda un bloque en ser encriptado con IDEA puede ser dividido en : 1.- Operaciones que toman aproximadamente el mismo tiempo.

2.- Todas las multiplicaciones excepto una a la cual nos dirigimos. (aproximadamente sigue una distribución normal.) 3.- La multiplicación a la que nos dirigimos. Si esta tiene una entrada cero, de todas

maneras tomará menos tiempo que una que contenga ceros. El tiempo de todo el proceso de encriptación es la suma de los tres tiempos.

4. Protección antivirus 4.1. Tipos de virus En la actualidad existen diferentes categorías de virus entre las cuales tenemos :

Los Macro Virus, actualmente son los más comunes (Por ejemplo, el Wazzu, Adam, Concept y el Nuclear). Estos se replican mediante un método completamente diferente a los virus convencionales(un virus convencional es un programa que requiere ser ejecutado de alguna forma o cargarse desde el sector boot de un disco, se extienden a travésde cualquier programa e inclusive pueden atacarse a sí mismos). Los macro virus no se atacan a sí mismos si no que se difunden a través de una aplicación específica como Microsoft Word o Excel que pueden encontrarse en la mayoría de los negocios y hogares. Los programas mencionados incluyen macro lenguajes muy potentes de tal manera que muchas tareas pueden ser ejecutadas con poca o ninguna entrada por parte del usuario. Inclusive los archivos Word y Excel tienen la posiblidad de abrir macros automáticamente y usan una plantilla macro global. (todas las macros guardadas en este archivo global se ejecutan automáticamente cuando se abre algo en el programa).

Seguridad y Auditoría

Softein 34

Existen virus que infectan el sector boot de los discos o diskettes. El boot contiene información relacionada con el formato del disco, la data almacenada y un pequeño programa que carga los archivos del sistema DOS. (Pj, este programa dispara el mensaje : “Non-System Disk or Disk Error”. Cuando se introduce un diskette infectado y se hace alguna operación con él, al reinciar el equipo el virus estará instalado en el sector de arranque. Cuando se lee el sector boot el virus se carga a memoria y infecta el disco duro. Otra categoría la componen aquellos que infectan archivos : .EXE, .COM, . SYS, DRV, BIN y OVL. Otros virus afectan el Master Boot – Tabla de Particiones. Todo disco duro contiene un Master Boot sector y una tabla de particiones. La infección se da de la misma manera que en los virus que infectan el sector boot. Existen virus que combinan todas estas categorías y recientemente están apareciendo virus que se propagan por correo electrónico como archivos adjuntos y que representan un gran peligro debido a la gran difusión del Internet. 4.1.1. El virus Zipped_Files.

Este mes saltaba a luz un nuevo virus, conocido como Zipped_Files, comparado por sus características de reproducción como el nuevo Melissa. De hecho, no solo se reproducía tan rápido o más que el ya mítico virus, sino que su payload dañino lo convertía en un auténtico peligro para las redes locales. Miles de ordenadores afectados en todo el mundo, grandes compañías atacadas por el virus se vieron en la necesidad de apagar sus servidores. Como PricewaterhouseCoopers que apagó sus servidores de correo, dejando sin servicio a más de 45.000 empleados, o la conocida empresa aereoespacial Boeing que también tuvo que proceder de forma similar afectando la parada a más de 150.000 empleados . Al igual que ocurrió con Melissa, y dada la repercusión de este virus y su especial gravedad el mismo FBI ya se encuentra investigando todo lo relacionado a este caso. Todo para buscar y localizar al autor de Zipped_FIles, parece ser que la creación de virus informáticos es un delito que el FBI está dispuesto a perseguir duramente . Este virus es especialmente grave no sólo por sus difusión a través del e-mail sino que dispone de habilidades de infección y ataque a través de las redes locales sin intervención de los usuarios. Este hecho era una importante característica que había pasado desapercibida en los análisis de los especialistas. El virus tiene características para la búsqueda, infección y borrado de ficheros a través de recursos compartidos de la red.

4.2. Estrategias de protección

Muchos usuarios efectúan descarga de información desde Internet y usan y comparten diskettes, estos usuarios ya deberían contemplar una estrategia antivirus.

Seguridad y Auditoría

Softein 35

Una estrategia antivirus debe incluir: Políticas Estrategias Tecnología

Una consideración importante es tener siempre un diskette de arranque limpio de virus y protegido contra escritura. Si se arranca desde un disco infectado, el software antivirus podría propagar el virus ya que debe abrir todos los archivos que revisa. Adicionalmente a tener un software antivirus recientemente actualizado instalado debemos considerar en tener un backup limpio debido a que los programas antivirus podrían dañar el sector de arranque o archivos o no resolver el problema completamente. Estrategias Antivirus 1. Indentificar puntos vulnerables ante una infección y diseñar medidas de protección. 2. Instalar antivirus residentes en los posibles puntos de ingreso. 3. Todos los diskettes deben ser revisados en una PC stand-alone antes de copiar su

información a clientes de la red o servidores. 4. Los consultores o personas que brindan servicios de terceros no deben poder conectar

sus computadores portátiles a la sin autorización y previa revisión antivirus. 5. Todos los vendedores deben realizar sus demostraciones en su propio equipo. 6. El software shareware obtenido de Internet debe ser prohibido o controlado y revisado. 7. Todos los diskettes utilitarios y de diagnóstico deben ser revisados antes de ser usados. 8. Proteger contra escritura todos los diskettes, especialmente los que contengan archivos

.EXE y .COM 9. Retirar las disketteras de las PC’s clientes de la red y restringir la carga de datos a una

sola estanción con un responsable que revise los diskettes. 10.Crear un Master boot Create que deshabilite las escrituras al disco duro cuando se

arranca desde un floppy o deshabilitar el arranque desde un floppy, dependiendo del sistema operativo.

Seguridad y Auditoría

Softein 36

5. Conclusiones

La potencia de los procesadores y la tecnología viene aumentando a ritmos vertiginosos, lo cual va haciendo más vulnerables a algunos algortimos que anteriormente se creían seguros (DES fue vulnerado en 1997).

El uso de Internet y la posibilidad de realizar ataques de fuerza bruta coordinando el trabajo de miles de ordenadores a través de la red está siendo determinante para vulnerar algunos algoritmos. La organización Distributed Net que respalda estos ensayos asegura poder hallar una clave de 46 bits RC5 en menos de una hora.

Está en juego la seguridad del comercio electrónico, del correo cifrado, etc.

Un ejemplo del peligro con algunos algoritmos es MD4 que ya no es considerado seguro, a pesar de lo cual es al algoritmo utilizado por Windows NT 4 para almacenar las contraseñas de usuario. Existen incluso utilidades vencen estas contraseñas. El problema fue puesto de manifiesto en 1997 al explotar un bug de Internet Explorer 3.0.

Hay una necesidad de utilizar claves más largas de 56 bits como IDEA que hasta el

momento no ha sido vulnerado.

Seguridad y Auditoría

Softein 37

Anexos

Anexo 1: Código Fuente

/***************************************************************************** */

/* IDEA Encryption Algorithm */

/***************************************************************************** * /

/* */

/* IDEA (International Data Encryption Algorithm) is a block encryption */

/* algorithm whose development results from a co-operation between the */

/* Swiss Federal Institute of Technology Zurich (ETHZ) and Ascom Tech Ltd. */

/* IDEA encrypts or decrypts 64-bit data blocks, using symmetric 128-bit */

/* keys. The 128-bit keys are furthermore expanded to 52 16-bit subkeys. */

/* */

/* For detailed technical information on IDEA contact: */

/* */

/* Ascom Systec Ltd. E-Mail: [email protected] */

/* Gewerbepark http://WWW.ASCOM.COM/INFOSEC */

/* CH-5506 Maegenwil */

/* Switzerland */

/* */

/* Patent rights of Ascom Systec Ltd. granted in Europe, Japan and the US. */

/* All other rights reserved. */

/* */

/* For detailed patent information on IDEA contact: */

/* */

/* Ascom Systec Ltd. E-Mail: [email protected] */

/* Gewerbepark http://WWW.ASCOM.COM/INFOSEC */

/* CH-5506 Maegenwil */

/* Switzerland */

/* */

/*****************************************************************************/

/* */

/* Author: Alain Beuchat/Daniel Zimmermann */

/* Release: 2.0 */

/* */

/*****************************************************************************/

/*

* File Name: ideat.c

*

* Compile Option: TEST_SIZE: if defined examines the size of uint16,

Seguridad y Auditoría

Softein 38

* uint32, int32, and prints a short report.

*

* Description:

* Test program for the IDEA block encryption algorithm.

* The initial {0, 1, 2, 3,} data block is encrypted and decrypted NENC

* times (3 tests using 3 different keys). After the last decryption,

* the last block should be the same as the initial data block.

* test_size() prints out warnings, suggestions, or comments regarding

* the type sizes chosen.

*/

#include <stdio.h>

#include "c_fct.h"

#include "ideaplus.h"

#define NENC 3 /* number of encryption */

#define TEST_SIZE /* print a short report regarding the variable sizes */

#ifdef TEST_SIZE

_VOID_ test_size()

{

int size_uint16 = sizeof(uint16);

int size_uint32 = sizeof(uint32);

int size_int32 = sizeof(int32);

int size_short = sizeof(short);

int size_int = sizeof(int);

int size_long = sizeof(long);

int printed = 0;

/* uint16 size test */

if (size_uint16 < 2) {

printf(" Warning: uint16 is too small, ");

printf("at least two bytes are required:\n");

printf(" --> typedef unsigned ");

if (size_int == 2) printf("%s ","int");

else if (size_long == 2) printf("%s ","long");

printf("uint16;\n");

printed = 1;

}

if ((size_uint16 > 2) && (size_short <= 2)) {

printf(" Suggestion: uint16 is large, ");

printf("only two bytes are required:\n");

Seguridad y Auditoría

Softein 39

printf(" --> typedef unsigned ");

if (size_short == 2) printf("%s ","short");

else if (size_int == 2) printf("%s ","int");

printf("uint16;\n");

printed = 1;

}

if (!printed) printf(" Optimum size for uint16.\n");

printed = 0;

/* uint32 size test */

if (size_uint32 < 4) {

printf(" Warning: uint32 is too small, ");

printf("at least four bytes are required:\n");

printf(" --> typedef unsigned ");

if (size_int == 4) printf("%s ","int");

else if (size_long == 4) printf("%s ","long");

printf("uint32;\n");

printed = 1;

}

if ((size_uint32 > 4) && (size_short <= 4)) {

printf(" Suggestion: uint32 is large, ");

printf("only four bytes are required:\n");

printf(" --> typedef unsigned ");

if (size_short == 4) printf("%s ","short");

else if (size_int == 4) printf("%s ","int");

printf("uint32;\n");

printed = 1;

}

if (!printed) printf(" Optimum size for uint32.\n");

printed = 0;

/* int32 size test */

if (size_int32 < 4) {

printf(" Warning: int32 is too small, ");

printf("at least four bytes are required:\n");

printf(" --> typedef ");

if (size_int == 4) printf("%s ","int");

else if (size_long == 4) printf("%s ","long");

printf("int32;\n");

printed = 1;

}

if ((size_int32 > 4) && (size_short <= 4)) {

Seguridad y Auditoría

Softein 40

printf(" Suggestion: int32 is large, ");

printf("only four bytes are required:\n");

printf(" --> typedef unsigned ");

if (size_short == 4) printf("%s ","short");

else if (size_int == 4) printf("%s ","int");

printf("int32;\n ");

printed = 1;

}

if (!printed) printf(" Optimum size for int32.\n\n");

}

#endif /* TEST_SIZE */

main()

{

int i, j, k;

idea_key_t key[3];

idea_subkeys_t enkey;

idea_subkeys_t dekey;

idea_block_t data;

printf("\n");

printf("**************************************************\n");

printf("* IDEA Algorithm Test Program *\n");

printf("**************************************************\n");

printf("* *\n");

printf("* This program encrypts and decrypts%3d times *\n",NENC);

printf("* the initial block of data {0, 1, 2, 3}. *\n");

printf("* The last block must be the same as the initial *\n");

printf("* block. *\n");

printf("* *\n");

printf("* Optionaly, some suggestions regarding the size *\n");

printf("* of the data can be printed out. *\n");

printf("* *\n");

printf("**************************************************\n");

printf("\n");

/* Computation of the keys */

for (i=0;i<8;i++) {

key[0][i]= i+1;

if (i <= 3) key[1][i] = (i+1) * 1000;

else key[1][i] = (8-i) * 1000;

if (i <= 4)

Seguridad y Auditoría

Softein 41

key[2][i] = (i+1)*1000 + (i+1)*100 + (i+1)*10 + (i+1);

else

key[2][i] = (i-4)*1000 + (i-4)*100 + (i-4)*10 + (i-4);

}

/* Test with one key */

for( k=0; k<3; k++) {

idea_encrypt_subkeys(key[k],enkey);

idea_decrypt_subkeys(enkey,dekey);

printf("\n Key: ");

for (i=0;i<4;i++) printf(" %6d",enkey[i]);

printf("\n ");

for (i=0;i<4;i++) printf(" %6d",enkey[4+i]);

printf("\n Input block: ");

for (i=0;i<4;i++) {

data[i]=i;

printf(" %6d",data[i]);

}

for( j=0;j<NENC;j++) {

idea_cipher(data,data,enkey);

printf("\n encryption%3d",j+1);

for (i=0;i<4;i++) printf(" %6d",data[i]);

}

for( j=NENC;j>0;j--) {

idea_cipher(data,data,dekey);

if (j == 1)

printf("\n Last block: ");

else

printf("\n decryption%3d",j-1);

for (i=0;i<4;i++) printf(" %6d",data[i]);

}

printf("\n\n");

}

#ifdef TEST_SIZE

/* Check type sizes */

test_size();

#endif /* TEST_SIZE */

return(0);

}

Seguridad y Auditoría

Softein 42

* File Name: ideaplus.c

*

* Compile Options: - none

*

* Routines:

* _VOID_ idea_encrypt_subkeys(idea_key_t,idea_subkeys_t)

* _VOID_ idea_decrypt_subkeys(idea_subkeys_t,idea_subkeys_t)

* _VOID_ idea_cipher(idea_block_t,idea_block_t,idea_subkeys_t)

*

* Description:

* IDEA 64-bit block cipher algorithm

* idea_encrypt_subkeys: computes the encryption IDEA subkeys

* idea_decrypt_subkeys: computes the decryption IDEA subkeys

* idea_cipher: IDEA block cipher

*

*/

#include "c_fct.h"

#include "ideaplus.h"

#define LSW16(y) ((y) & 0xffff) /* low significant 16-bit */

#define MSW16(y) ((y >> 16) & 0xffff) /* most significant 16-bit */

#define MUL_MOD (uint32)(((uint32)1 << 16) | 1) /* 2**16 + 1 */

/*

* Multiplication modulo 2**16 + 1

*/

static uint16 mul

C_ARG_2( uint16,x, uint16,y)

{

uint16 t16;

uint32 t32;

x = LSW16(x - 1);

t16 = LSW16(y - 1);

t32 = (uint32) x * t16 + x + t16 + 1;

x = LSW16( t32 );

t16 = MSW16( t32 );

x = (x - t16) + (x <=t16);

return x;

} /* mul */

Seguridad y Auditoría

Softein 43

/*

* Compute multiplicative inverse of x by Euclid's GCD algorithm.

*/

static uint16 mul_inv

C_ARG_1(uint16,x)

{

int32 n1 = MUL_MOD;

int32 n2 = (int32)x;

int32 b1 = 0;

int32 b2 = 1;

int32 q, r, t;

if (x <= 1) return x;

while (1) {

r = n1 % n2;

q = n1 / n2;

if (!r) {

if (b2 < 0) b2 += MUL_MOD;

return LSW16(b2);

}

else {

n1 = n2;

n2 = r;

t = b2;

b2 = b1 - q * b2;

b1 = t;

}

}

} /* mul_inv */

/*

* Computes IDEA encryption subkeys.

*/

_VOID_ idea_encrypt_subkeys

C_ARG_2( idea_key_t,key, idea_subkeys_t,subkeys)

{

int i;

for (i=0;i<8;i++) subkeys[i] = key[i];

for (;i<IDEA_SK_NUM;i++)

subkeys[i] = LSW16((subkeys[(i+1) % 0x8 ? i-7 : i-15] << 9) |

Seguridad y Auditoría

Softein 44

(subkeys[(i+2) % 0x8 < 2 ? i-14 : i-6] >> 7));

} /* idea_encrypt_subkeys */

/*

* Computes IDEA decryption subkeys from encryption subkeys.

*/

_VOID_ idea_decrypt_subkeys

C_ARG_2( idea_subkeys_t,encrypt_subkeys, idea_subkeys_t,decrypt_subkeys)

{

uint16 *pen = (uint16*)encrypt_subkeys;

uint16 *pde = (uint16*)decrypt_subkeys;

idea_subkeys_t t;

uint16 *pt = (uint16*)t;

int i;

t[6 * IDEA_ROUNDS] = mul_inv(*pen++);

t[6 * IDEA_ROUNDS + 1] = LSW16(-*pen++);

t[6 * IDEA_ROUNDS + 2] = LSW16(-*pen++);

t[6 * IDEA_ROUNDS + 3] = mul_inv(*pen++);

for (i=6*(IDEA_ROUNDS-1);i>=0;i-=6) {

t[i + 4] = *pen++;

t[i + 5] = *pen++;

t[i] = mul_inv(*pen++);

if (i) {

t[i + 2] = LSW16(-*pen++);

t[i + 1] = LSW16(-*pen++);

}

else {

t[1] = LSW16(-*pen++);

t[2] = LSW16(-*pen++);

}

t[i + 3] = mul_inv(*pen++);

}

for (i=0;i<IDEA_SK_NUM;i++) {

*pde++ = *pt;

*pt++ = 0;

}

} /* idea_decrypt_subkey */

/*

* IDEA encryption/decryption algorithm.

Seguridad y Auditoría

Softein 45

* Note: block_in and block_out can be the same block.

*/

_VOID_ idea_cipher

C_ARG_3(idea_block_t,block_in, idea_block_t,block_out, idea_subkeys_t,key)

{

uint16 *pin = (uint16*)block_in;

uint16 *pout = (uint16*)block_out;

uint16 *pk = (uint16*)key;

uint16 word1, word2, word3, word4;

uint16 t1, t2;

int i;

word1 = *pin++;

word2 = *pin++;

word3 = *pin++;

word4 = *pin;

for (i=IDEA_ROUNDS;i>0;i--) {

word1 = mul(word1,*pk++);

word2 = LSW16(word2 + *pk++);

word3 = LSW16(word3 + *pk++);

word4 = mul(word4,*pk++);

t2 = word1 ^ word3;

t2 = mul(t2,*pk++);

t1 = LSW16(t2 + (word2 ^ word4));

t1 = mul(t1,*pk++);

t2 = LSW16(t1 + t2);

word1 ^= t1;

word4 ^= t2;

t2 ^= word2;

word2 = word3 ^ t1;

word3 = t2;

}

word1 = mul(word1,*pk++);

*pout++ = word1;

*pout++ = LSW16(word3 + *pk++);

*pout++ = LSW16(word2 + *pk++);

word4 = mul(word4,*pk);

Seguridad y Auditoría

Softein 46

*pout = word4;

} /* idea_cipher */

Seguridad y Auditoría

Softein 47

Anexo 2

Teorema de Euclides: Si un número primo divide a un producto entonces divide a uno de sus factores.

Teorema fundamental de la aritmética : todo número primo puede escribirse de forma única como un producto de números primos : a*b = mcd(a,b) * mcm(a,b).

Cuando se trabaja con números grandes se usa el algoritmo de Euclides para hallar el mcd de dos números sin necesidad de conocer su descomposición en factores.

Seguridad y Auditoría

Softein 48

Bibliografía

Side Channel Crypanalysis of Product Ciphers, por John Kesley y Bruce Schneider – Counterpane Systems – 1998.

http://www.kriptopolis.com/boletin/0020.txt

http://thunder.indstate.edu/~emersonb/430/main.htm

http://www.ancort.ru/Spanish/default.asp

http://www.ascom.ch/systec/

http://www.coastnet.com/~pramsey/cryptix/doc/cryptix.security.IDEA.html

http://www.rsa.com/rsalabs/faq/html/2-4-5.html

http://www.manos.com/sec_links.html

http://derecho.org/comunidad/carlospaladella/seg1.htm

http://www.wntmag.com/atrasados/1996/04_dic96/seguridad.htm

http://www.ssh.fi/tech/crypto/algorithms.html

ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/idea/

http://www.io.com

http://www.setsystems.com

http://fn2.freenet.edmonton.ab.ca/~jsavard/index.html

http://www.marx.com/ppp/dl-eval.html

http://fermat.ma.rhbnc.ac.uk/~fauzan/tinyidea.html

http://www.imc.org/draft-ietf-smime-idea

http://www.sls.ch/reviews.html