| Artículos | 01 MAR 2007

Cifrado simétrico en aplicaciones web

Tags: Histórico
Curso de criptografía para la Web (II)
Gonzalo Alvarez.
En este curso de criptografía para la Web de cinco entregas se explicarán algunos de los conceptos de criptografía básicos que todo desarrollador y arquitecto de aplicaciones web debería conocer para implantar una protección criptográfica adecuada.
En esta entrega se explican las características más importantes del cifrado simétrico y cómo pueden utilizarse dentro de una aplicación web utilizando las plataformas de desarrollo más extendidas, como .NET, J2EE y PHP.

Nivel de dificultad: Medio
Objetivo: Implantar de forma segura el cifrado simétrico en una aplicación web
Herramientas: Las propias herramientas de desarrollo de aplicaciones web

Uno de los usos principales a los que se destina la criptografía es la garantía de la confidencialidad: sólo las entidades autorizadas son capaces de leer la información. El mecanismo más utilizado en aplicaciones web para asegurar la confidencialidad consiste en la implantación de algoritmos de cifrado simétrico.
Existen muchas situaciones en las que se presenta la necesidad de cifrar la información dentro de una aplicación web: cifrado de los testigos de sesión, que pueden contener datos como el identificador del usuario o su login, de manera que se evita que un atacante pueda reproducirlo; cifrado de cadenas de conexión a la base de datos, de manera que no se exponga la información de autenticación ante la base de datos; cifrado de campos sensibles de la base de datos, de manera que si un atacante es capaz de acceder directamente a la base de datos, por ejemplo a través de una vulnerabilidad de inyección de SQL, no pueda obtener información de la misma; cifrado de archivos con datos confidenciales, para evitar la revelación de información en caso de un ataque con éxito capaz de acceder arbitrariamente al sistema de archivos. En definitiva, seguro que en un momento u otro, surgirá la necesidad de cifrar la información.
En este curso no se cubre el cifrado con SSL, que ya fue tratado anteriormente en el curso de seguridad web. SSL garantiza la confidencialidad e integridad durante el transporte, así como la autenticación de servidores y, opcionalmente, usuarios. El objetivo de esta entrega es enseñar a utilizar el cifrado simétrico para proteger datos en el servidor, no durante el transporte.

Fundamentos de los algoritmos de cifrado simétrico
El cifrado consiste en transformar mediante un algoritmo matemático un texto en claro inteligible por todos los lectores en un texto cifrado, totalmente ininteligible excepto para el legítimo destinatario del mismo, que será el poseedor de la clave secreta. Se distinguen dos métodos generales de cifrado: cifrado simétrico y cifrado asimétrico. Este último será tratado en posteriores entregas.
Cuando se emplea la misma clave en las operaciones de cifrado y descifrado, se dice que el criptosistema es simétrico o de clave secreta. Estos sistemas son mucho más rápidos que los de clave pública, por lo que resultan apropiados para el cifrado de grandes volúmenes de datos. Ésta es la opción utilizada para cifrar el cuerpo de los mensajes en el correo electrónico o los datos intercambiados en las comunicaciones digitales a través de internet o el contenido de un archivo del disco duro o los registros de una base de datos.
Estos criptosistemas pueden subdividirse a su vez en dos categorías: 1) cifradores en flujo: trabajan sobre flujos continuos de bits; y 2) cifradores de bloque: cifran los datos utilizando bloques de tamaño fijo.
El fundamento del cifrado en flujo consiste en generar una secuencia pseudoaleatoria de símbolos mediante un algoritmo determinístico y público, con la cual se mezclan los símbolos del mensaje, generalmente mediante una operación de XOR (OR exclusivo) o suma módulo 2, dando lugar a los símbolos de texto cifrado, que pueden transmitirse por el canal público inseguro. El funcionamiento del algoritmo determinístico está gobernado por una clave secreta que determina en cada caso cómo será la secuencia generada. En recepción se utiliza la misma clave y algoritmo para generar idéntica secuencia, de manera que sumándola módulo 2 al texto cifrado, se obtiene el texto del mensaje original, como se muestra en la Figura 2.
La mayoría de los cifradores militares son de flujo. A continuación se citan algunos ejemplos de aplicaciones civiles. En la telefonía móvil digital GSM se utiliza el algoritmo A5/1, que constituye también un cifrador en flujo. El protocolo de cifrado SSL para comunicaciones TCP/IP y los protocolos WEP y WPA para redes inalámbricas WiFi utilizan otro algoritmo de cifrado en flujo: RC4. Asimismo, el estándar de comunicaciones inalámbricas de alcance personal Bluetooth se sirve del cifrador en flujo llamado E0.
Un inconveniente asociado a los cifradores en flujo es que no se debe reutilizar la misma clave para cifrar dos textos distintos. Como en la mayoría de situaciones que surgen en el contexto de la seguridad web precisamente no hay más remedio que reutilizar la clave, estos cifradores resultan desaconsejables y no se hará más hincapié en ellos.
Por su parte, los cifradores en bloque cifran el mensaje original agrupando los símbolos en grupos o bloques de dos o más elementos, de manera que cada bloque de símbolos iguales se cifra siempre de igual manera. Por tanto, mensajes originales iguales cifrados con la misma clave producen mensajes cifrados iguales. Además, son robustos al uso repetido de la misma clave para cifrar textos distintos.
Los cifradores en bloque más utilizados son AES, DES y 3DES, aunque existen otros muchos soportados por la mayoría de implementaciones criptográficas de los distintos lenguajes. Hoy en día, se considera que la mejor elección de cifrado consiste en utilizar AES o estándar de cifrado avanzado (Advanced Encryption Standard). Aunque DES no ha sido roto, utiliza una longitud de clave muy corta, de tan sólo 56 bits, por lo que con un ordenador corriente actual puede encontrarse la clave por fuerza bruta. Por consiguiente, no se recomienda su uso. Siempre que necesite cifrar algo, salvo que exista algún poderoso motivo en contra, utilice AES, también conocido como Rijndael.
Se ha convenido en denominar al uso directo de un cifrador en bloque como modo Libro electrónico de códigos. En la norma ISO 8372 se definen otros tres modos de uso para cualquier cifrador en bloque. Los cuatro modos son:
- Libro electrónico de códigos (ECB): cada bloque de datos en claro es cifrado de forma separada. El texto en claro P se divide en bloques P = P1P2…Pm y todos son cifrados con la misma clave K como Ci = algoritmo( Pi, K ). El texto cifrado será la concatenación de los bloques cifrados C = C1C2…Cm. En este modo, dos bloques iguales se cifrarán siempre produciendo los mismos bloques cifrados, si se usa la misma clave.
- Encadenamiento de bloques cifrados (CBC): cada bloque de datos en claro se cifra después de haber sido mezclado con el bloque de datos cifrados previo como Ci = algoritmo(Pi + Ci–1, K). De nuevo, el texto cifrado es la concatenación de los bloques cifrados anteriores C = C1C2…Cm. Este modo requiere un valor inicial C0 o vector de inicialización (IV). En este modo, dos bloques de datos en claro iguales pueden cifrarse en bloques cifrados diferentes, incluso si se usa la misma clave, siempre que los bloques de datos cifrados anteriores sean diferentes.
- Realimentación

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información