IMCP

Campaña Nacional de la Contaduría Pública

Fundado en 1923 y conformado actualmente de 60 colegios de Contadores

IMCP_Tienda Conoce a tu Colegio y Guía de Operación

Noticias Fiscales

  • Imprimir
  • youtube

La internet surge en EE.UU., como una necesidad de interconectar diferentes redes de computadoras diseminadas en todo el territorio estadounidense. Lo importante era asegurar la conexión entre las computadoras, sin interesar la seguridad de estas conexiones.

A medida que la internet fue ganando terreno en el área comercial y en los hogares, se empezó a dar importancia a la seguridad de la información que circulaba por ésta. El gusano de Morris de 1988 puso en evidencia lo vulnerable que estaba la red en sí y no sólo la información que circulaba en ella.

Es importante recordar que la internet de 1988, no era la mismo que conocemos hoy en día. El correo electrónico no contaba con las interfaces de actuales y no todo mundo tenía acceso a ella. Por otro lado, no era común el contar con una computadora en casa, el Web aún no surgía y el chat no era otra cosa que un programa llamado talk, que permitía a dos personas comunicarse a través de una terminal virtual.

La seguridad informática se define como el conjunto de políticas y mecanismos que nos permiten garantizar la confidencialidad, la integridad y la disponibilidad de los recursos de un sistema. En este caso los recursos a proteger es la información que circula por internet y los nodos (computadoras, ruteadores, switches y otros dispositivos) que la componen. Una de las herramientas utilizada para cumplir con este objetivo es la criptología.

La criptología es la ciencia que estudia los aspectos y contenidos de información en condiciones de secrecía. Se divide en criptografía y criptoanálisis. La criptografía se encarga de transformar la información de tal forma que sólo las partes involucradas en la comunicación entiendan el contenido. Por otro lado, el criptoanálisis abarca las diferentes metodologías y técnicas que permiten recuperar la información que ha sido previamente tratada por un procedimiento criptográfico, sin conocer a priori la técnica utilizada.

Un criptosistema es el algoritmo o método utilizado para encriptar y/o decriptar un mensaje. Todos los criptosistemas computacionales se basan en el concepto de llave. Dependiendo del tipo de llave usada, los criptosistemas se dividen en simétricos y asimétricos.

Los criptosistemas simétricos son aquéllos en que la llave de encripción es la misma que la de decripción. Consideremos dos usuarios, Alicia y Beto, que desean intercambiar información de forma segura. Alicia encripta el mensaje a enviar usando una llave que comparte con Beto y se lo envía.

Cuando Beto recibe el mensaje lo decripta con la misma llave que Alicia usó para encriptarlo. La desventaja de este tipo de criptosistemas es que Alicia y Beto deben ponerse de acuerdo en la llave. Lo anterior no representa problema alguno si los dos trabajan en la misma oficina, pero no es lo mismo si los dos residen en países diferentes y sólo se pueden comunicar por internet. Ejemplos de este tipo de criptosistemas son DES y su variante Triple DES, AES, IDEA, Blowfish, Twofish y otros.

El problema anterior dio origen a la criptografía asimétrica, cuya característica principal es que llave de encripción es diferente a la de decripción. Una persona cuenta con dos llaves: una pública, conocida por todo el mundo y una privada que solo debe conocer el usuario. Tomando el ejemplo anterior, Alicia encripta el mensaje con la llave pública de Beto y se lo envía.

Una vez que el mensaje es recibido, Beto lo decripta con su llave privada. Las llaves están relacionadas de tal forma que no es posible decriptar un mensaje encriptado con una llave pública usando esta misma llave. Sólo la persona que posea la llave privada puede decriptar el mensaje. Los tres principales criptosistemas asimétricos son RSA, El Gammal y Rabin.

Los objetivos de la criptografía son dos: por un lado, mantener la confidencialidad del mensaje y garantizar la autenticidad tanto del mensaje como del par remitente/destinatario. El primer objetivo implica que la información contenida en el mensaje permanezca secreta. El segundo objetivo asegura que el mensaje no sufrió modificación alguna durante su transmisión y que remitente y destinatario son quienes dicen ser y no remitentes y/o destinatarios fraudulentos

Una internet segura requiere, entre otras cosas, cumplir con los dos objetivos anteriores, a través de protocolos criptográficos. Este tipo de protocolos están designados para llevar a cabo una tarea específica usando como herramienta algún algoritmo criptográfico. Existe una amplia variedad de protocolos criptográficos que dan respuesta a diferentes objetivos. Se pueden agrupar en dos grandes familias, los que definen las Redes Virtuales Privadas (VPN, por sus siglas en ingles) y los que proporcionan un medio de autenticación para un usuario con respecto a un servidor.

Las redes privadas virtuales

Si la compañía ACME se desea comunicar en secreto con la compañía BACARA tiene dos opciones. La primera de ellas consiste en tender un cable de comunicación entre las dos compañías, lo cual puede llegar a tener un costo considerable. La segunda opción es utilizar la infraestructura pública de comunicación, pero manipulando la información que circula por ella de tal forma que sólo las dos compañías puedan interpretar los datos que circulan por ella. Esta última opción es el principio de funcionamiento de las Redes Privadas Virtuales (VPN, por sus siglas en inglés).

Una VPN tiene por misión asegurar un canal público de comunicación encriptando toda la información que circule por ella y autenticando a las partes involucradas. La comunicación se puede asegurar a diferentes capas. A nivel de capa aplicación los programas trabajan de host a host y sólo se protege el payload del paquete y no el paquete. Ejemplos de software usado para este propósito son PGP o SSH.

A nivel de capa transporte el contenido de la comunicación es protegido, pero no así los paquetes. Un ejemplo de este tipo de protocolos es SSL. La capa red es protegida por el protocolo IPSec el cual no sólo encripta el payload sino que puede encriptar el encabezado TCP/IP del paquete.

PGP, Pretty Good Privacy, es un software cuyo objetivo primario era poner a la disposición del público lo mejor de la criptografía académica para proporcionarles privacidad en sus comunicaciones. Hoy en día es una herramienta usada para encriptar y firmar información enviada por correo electrónico. El software se puede obtener de www.pgpi.org y proporciona encripción, firma de correo y borrado seguro.

SSH, Secure SHell, es una opción para contar con una conexión segura entre un host y un servidor. La conexión es encriptada y no corremos el riesgo de que alguien capture el password con un sniffer. Es una buen substituto para telnet, ftp y los comandos r. El software del cliente es libre y se puede obtener en internet. Sin embargo, la versión del servidor es comercial, pero existe una versión libre para Linux: OpenSSH.

El protocolo por excelencia usado para proteger la transmisión de información entre servidores web y los browsers de los clientes es SSL (Secure Sockets Layer). Este protocolo es el que se usa cuando un usuario accede a una página web con el objetivo de adquirir un producto.

La parte del cliente es completamente transparente para el usuario, y no es necesario que el usuario instale software alguno. Toda la lógica de la aplicación (i.e. cuando es necesario encriptar, cuándo no y con qué protocolo) se lleva a cabo en el servidor. Es el desarrollador de la página web el que debe hacer lo necesario para encriptar la información en el momento necesario.

La actualización del protocolo de internet IPV4 a IPV6 se enfocó principalmente a tres aspectos: contar con más direcciones IP, incorporar QoS al protocolo y el proporcionar mecanismos para asegurar la comunicación. La gente de internet decidió que no había que esperar que IPV6 estuviera adoptado por todos los dispositivos para usar los mecanismos de seguridad.

Se tomó la parte de seguridad de IPV6 y se integró en un protocolo conocido como IPSec. Este protocolo permite asegurar la comunicación a nivel paquete, pudiendo encriptar y/o autenticar la información que viaja en el payload o en el encabezado de los paquetes. Se cuenta con tres protocolos, IKE que permite un intercambio de llaves entre las partes, ESP permite encriptar la información del paquete y AH es el encargado de autenticar, sin encriptar, la información dentro del paquete.

IPSec cuenta con dos modos de funcionamiento, si lo que se desea asegurar es el payload del paquete se usa el modo transporte; por otro lado el modo túnel permite asegurar los datos del encabezado del paquete. Este protocolo no es simple de instalar como los anteriores, ya que es necesario modificar el núcleo del sistema operativo donde se vaya a usar. Es forzoso intervenir la máquina del cliente y servidor para que se pueda usar.

Se cuenta con varias opciones para asegurar un canal de comunicación. No existe una única opción y todas proporcionan autenticación, firma y encripción de la información. Asimismo, es posible usar más de un protocolo para proporcionar mayor seguridad. Es decir, es posible encriptar un enlace con IPSec y después usar SSH, SSL o PGP para conectarse a un servidor, acceder a una página web o enviar un correo. Tan sólo hay que recordar que la principal desventaja de las VPN es el desempeño, ya que es necesario encriptar/decriptar toda la información que entra y sale a un host; la velocidad de transmisión se puede ver afectada.

La autenticación de usuarios en internet

Se define como autenticación al hecho de que una computadora verifique que un usuario es quien dice ser. El mecanismo de autenticación más usado es el de password. El usuario le proporciona a la computadora su identidad y el password asociado a éste. La maquina verifica que el password proporcionado está relacionado con la identidad proporcionada; si éste es el caso, el usuario está autenticado; en caso contrario, el usuario no podrá acceder al sistema. El problema de este tipo de protocolos surge cuando un atacante cuenta con un sniffer y captura la identidad y el password. A partir de este momento el atacante puede autenticarse en el servidor como si se tratara del usuario.

Es posible usar los conceptos criptográficos para ayudar en la definición de protocolos de autenticación, la mayoría de los cuales están basados en el concepto de secreto compartido. Este secreto no es otra cosa que una llave, simétrica en muchos casos, que comparten el host donde se encuentra el usuario y el servidor en donde se desea autenticar. El usuario proporciona su identidad al servidor realizando una operación criptográfica en un número que el servidor le proporciona.

Por ejemplo, si un usuario A se desea autenticar con un servidor B, el usuario envía su identidad al servidor. El servidor genera un número (conocido como reto) y lo envía al usuario. Cuando el usuario recibe el reto, lo encripta con el secreto que comparte con el servidor (la llave) y lo envía encriptado al servidor. Este último lo decripta y verifica que sea el mismo que envío en un principio. Si lo es, el usuario está autenticado, sino la autenticación falló.

El protocolo usa una llave simétrica junto con algún algoritmo como DES o IDEA. Un atacante no puede impersonalizar al usuario A basado en lo que capture con un sniffer, ya que la próxima vez el servidor enviará un reto diferente. Sin embargo, la autenticación no es mutua, ya que el servidor autentica al usuario, pero éste no autentica al servidor. Esto se resuelve si el usuario le envía un reto al servidor.

No todos los protocolos de autenticación están basados en criptografía simétrica. Es posible modificar el protocolo anterior para que el secreto compartido sea una llave pública y no una llave simétrica. En este caso se encripta el reto con alguna de las llaves y se decripta con la otra. También es posible aplicar un hash al reto o firmar éste.

Un hash (traducido como digestivo por varias personas) consiste en una función que, dada una entrada de información de tamaño variable, produce un número de identificación único de la información proporcionada. Si la información se cambia en un bit la información de entrada y se vuelve a calcular el hash, el número es totalmente diferente. Se considera una función de un solo sentido, ya que es posible producir un número a partir de una entrada, pero es imposible deducir la entrada a partir del número arrojado por la función hash. Dependiendo del tipo de algoritmo usado, el número es de 128, 160, o 512 bits. Entre los principales algoritmos hash podemos mencionas MD5, SHA-1 y SHA-512.

El protocolo S/KEY es un protocolo de autenticación basado en el uso de una función hash y en secretos compartidos. El usuario introduce una semilla al servidor y este lleva a cabo n operaciones hash sobre la semilla, donde n es un número cercano a 100. El servidor almacena el último valor calculado y el resto de los valores se mapean a valores ASCII y se imprimen. Esta lista se le entrega al usuario para que use uno a uno los passwords.

La primera vez que se autentique usa el primer password de la lista y lo elimina de ésta, el servidor lo compara con lo que tiene almacenado y autentica. En caso de que la autenticación tenga éxito calcula el siguiente valor hash. Cuando el usuario requiera autenticarse de nuevo, usa el siguiente password en la lista y lo presenta al servidor. Si un usuario captura el password no lo puede usar para impersonalizar al usuario debido a que éste ya no es válido. Las propiedades de la función hash, impiden que un atacante pueda deducir cuál es el siguiente password a partir de los
passwords capturados.

Uno de los inconvenientes del protocolo anterior es el hecho de que el usuario cuenta con una lista de los passwords en claro. Si el usuario pierde esta lista, o le es robada de alguna forma, alguien puede autenticarse ante el sistema a su nombre. Lo anterior lo resuelven los sistemas OTP, (password de una sola vez, por sus siglas en ingles).

Un sistema OTP garantiza un nuevo password en cada conexión. El usuario establece un secreto en el servidor remoto y cuenta con una calculadora en software o en hardware. A nivel hardware esta calculadora toma la forma de un token, sincronizado de alguna forma con el servidor. Al autenticarse, el servidor envía su reto en forma de string al usuario. Una vez que el usuario recibe el reto, lo introduce a su calculadora para calcular la respuesta a dicho reto. El resultado es enviado al servidor que verifica lo enviado y procede a la autenticación de acuerdo a lo recibido por parte del usuario.

Internet proporciona un ambiente de comunicación para los usuarios. La cantidad de servicios que se ofrecen basados en internet va en aumento. Podemos comprar varios artículos a través de internet, podemos comunicarnos con texto, imagen y sonido con personas que se encuentran en diferentes países.

Sin embargo, las amenazas están presentes y el riesgo de ser víctima de algún ataque en el que se vea comprometido alguno de nuestros recursos es real. Es nuestro deber estar preparados para aminorar este riesgo y, desde el punto de vista de desarrolladores, proporcionar un medio más seguro a los usuarios de usar internet. Pero también es responsabilidad del usuario el estar consciente de los riesgos y tomar las acciones pertinentes para dificultar la tarea de los atacantes.