Seguridad en el Web

Hasta el momento, se ha presentado un Web que ofrece un acceso abierto a un conjunto de información que explícitamente se hace pública. Sin embargo, en determinadas circunstancias, es interesante poder limitar el acceso a documentos reservados o útiles para un conjunto restringido de personas. Se pueden establecer dos tipos de restricciones:

Limitación de acceso en función de direcciones IP o dominio. Sólo los usuarios de un dominio u organización tendrán acceso a la información. Limitación de acceso por nombres de usuario y claves de acceso.
Sólo los usuarios que conozcan una clave de acceso válida pueden acceder a la información.
Otro aspecto que está cobrando especial importancia es la seguridad de la información que se intercambia en el Web. La explotación comercial de Internet exige disponer de sistemas de comunicación seguros, capaces de adaptarse a las necesidades de los nuevos servicios, como la compra electrónica o la banca a distancia. En estos servicios, se manejan dos conceptos fundamentales, la autentificación (garantizar que tanto el usuario de un cliente Web como un determinado servidor de información son quienes dicen ser) y la confidencialidad (hacer que la información intercambiada no pueda ser interceptada por terceros).
Con los sistemas de comunicación actualmente en uso, es técnicamente posible ‘pinchar’ un enlace de comunicaciones e interceptar el contenido de las comunicaciones TCP/IP que por él se transmiten. Cuando se envía información privada, por ejemplo un número de tarjeta de crédito en un formulario de compra, es vital garantizar que la información sea recibida exclusivamente por su destinatario, y que la identidad es la esperada.

Control de acceso a la información

Se utiliza para limitar el acceso a determinados documentos de un servidor Web, en función del origen y tipo de petición.

La forma de hacerlo varía con el entorno en el que se publican las páginas (sistema operativo y servidor HTTP, principalmente) general, todas las soluciones pasan por definir un fichero que contiene las diferentes limitaciones de acceso, en un formato característico del servidor HTTP. En algunos casos se utiliza un fichero global con las restricciones de acceso o bien un fichero por cada directorio al que se quiere limitar el acceso.

Cuando un cliente Web accede a un fichero protegido, el servidor devuelve un código de error asociado a la falta de permisos para realizar la operación (código 401). Si el acceso se realiza desde un dominio o dirección IP prohibida, no será posible acceder a la información desde ese sistema. Cuando la protección se basa en nombres y claves de acceso, el browser solicitará estos datos y los enviará al servidor para que sean verificados. Las claves de acceso se envían al servidor por diferentes sistemas, sin codificar (sencillo pero inseguro) o codificadas (DES o Kerberos, por ejemplo). Será el propio servidor HTTP el que informe sobre la manera en que se deben enviar estas claves de acceso.Para conocer cómo se especifican estas listas de control de acceso, se puede emplear la documentación de los respectivos servidores HTTP.

En la bibliografía se incluyen enlaces a estas páginas. En los siguientes apartados, se hace un breve repaso de las posibilidades de tres servidores muy utilizados.

Control de acceso en un servidor CERN

La versión 3.0 del servidor desarrollado por el CERN permite limitar el acceso a documentos o grupos de documentos, en función de nombres de usuario o direcciones de origen. El control de acceso se puede realizar para todo el servidor, modificando los ficheros globales de configuración o para un directorio concreto. Como este método está disponible para cualquier usuario, sin necesidad de tener privilegios de administración, será el comentado aquí.El control de acceso al contenido de un directorio se realiza creando un fichero de nombre .www_acl , en el mismo directorio que los ficheros cuyo acceso se quiere controlar. Un ejemplo aclarará más el formato de este fichero:

secret*.html : GET,POST : trusted_people
minutes*.html : GET,POST : secretaries
*.html : GET : willy,kenny

Está formado por líneas, cada una de ellas fijando una limitación de acceso diferente. Para cada especificación de ficheros, se indica los comandos HTTP permitidos y los usuarios o grupos de usuarios que pueden acceder. Cuando se añade un control de acceso, automáticamente se deshabilita el acceso para los usuarios o grupos no incluidos. Se utiliza el mecanismo de autentificación básica, en la cual las claves de acceso son transferidas por la red sin codificar.
Se pueden crear usuarios o grupos de usuarios con la aplicación htadm, a través de la cual se generan nuevos usuarios y se les asigna claves de acceso. Además, a través de la configuración global del servidor, es posible fijar permisos de acceso por defecto, o restringir el uso del servidor a determinadas direcciones (o rangos de direcciones) IP.

NOTA

Se puede encontrar más información sobre el uso de los controles de acceso en http://www.w3.org/pub/WWW/Daemon/User/Config/AccessAuth.html.

Control de acceso en un servidor NCSA

El servidor HTTP de la NCSA (esto se aplica también a Apache, desarrollado a partir de él) permite limitar el acceso en función de direcciones de origen o nombres de usuario. El procedimiento es similar al del servidor del CERN. Se debe crear un fichero de nombre .htaccess en cada directorio cuyos ficheros requieran protección. Por ejemplo:

AuthUserFile /users/luis/usuarios
AuthGroupFile /users/luis/grupos
AuthName ByPassword
AuthType Basic
<LIMIT GET POST>
requiere user luis
allow from .cdec.unican.es
deny from .hackers.unican.es
</LIMIT>

Como se puede ver, el control de acceso afecta a todos los ficheros del directorio protegido. Se puede conceder o denegar el acceso en función de direcciones IP, en cuyo caso se utilizaría un fichero de control de acceso de la forma (all equivale a cualquier petición):

<Limit GET POST>
deny from all
allow from pc1.usuarios.unican.es
</Limit>

Además, NCSA soporta los sistemas de autentificación básico (en el que las claves circulan de forma visible por la red) o MD5 (que añade una codificación a estas claves). Los ficheros de usuarios y claves se crean con la aplicación htpasswd, que permite editar un fichero de claves (similar al passwd de UNIX):

htpasswd –c /users/luis/usuarios luis
à Ahora se teclearía la clave de acceso para luis

NOTA

Se puede encontrar más información sobre el uso de los controles de acceso en http://hoohoo.ncsa.uiuc.edu/docs/tutorials/user.html.

Control de acceso en un servidor Microsoft

El servidor HTTP de Microsoft puede limitar el acceso a máquinas o grupos de máquinas, a través de la utilidad de configuración del servidor (el Administrador de Servicios Internet). Para ello, se agrega la máscara de red de aquellos sistemas a los que se concede (o niega) el acceso al servidor.Además, es posible controlar de forma individual el acceso a
cualquier documento o directorio del servidor, sirviéndose de los permisos de acceso a ficheros y la base de usuarios del servidor NT.

Para poder utilizar este tipo de control de acceso, es necesario que el sistema de ficheros en que residen los documentos Web tenga formato NTFS, el único que permite asignar permisos de acceso a ficheros.

Seguridad y privacidad

El intercambio seguro de información a través de una red abierta e insegura como Internet ha obligado a desarrollar numerosos sistemas de encriptación y autentificación de las transacciones, destinados a cubrir tres problemas fundamentales:
Conocer la identidad real de los clientes y servidores que se comunican, de forma que ambos dispongan de algún sistema para verificar la identidad del otro. Este tipo de identificación tiene particular importancia en las cibertiendas, ya que al
enviar un número de VISA para realizar un pago se tiene que estar seguro de que el destinatario es quien dice ser.
Garantizar que la transferencia de datos sólo pueda ser entendida por las aplicaciones que se comunican, utilizando
métodos criptográficos para codificar todos los datos intercambiados, y evitar las ‘escuchas’ en la red.
Garantizar la integridad de los datos enviados, teniendo capacidad de detectar cualquier cambio, intencionado o no, en
los mismos. Los métodos criptográficos tradicionales operan a partir de una palabra o frase llave, que sirve para codificar y descodificar los datos intercambiados. Está llave debe ser conocida por los dos extremos de la comunicación, por lo que el punto débil de este método es justamente el proceso de difusión de la llave. Se han ideado diversos sistemas para realizar un intercambio seguro de las llaves, por lo general haciendo que cambien con el tiempo, pero casi todos tienen algún punto débil.
La mayoría de los intercambios seguros de información se realizan según un sistema denominado Criptografía de Clave Pública; cada extremo de la comunicación dispone de dos claves, una pública que cualquiera puede solicitar y conocer, y otra privada, cuya seguridad es fundamental para el éxito de la codificación. Para enviar un mensaje seguro a una persona, se solicita su clave pública, con la que se codifica el mensaje. El sistema garantiza que el mensaje resultante sólo puede ser descodificado con la clave privada del destinatario.
El siguiente paso es asegurar la correcta identidad del destinatario. Para ello, se han creado las autoridades de certificación, organizaciones o empresas que distribuyen certificados, unos documentos digitales que contienen la identidad y clave pública de una determinada organización. Cuando se establece una conexión segura con un servidor HTTP, es posible acudir a una de estas autoridades de certificación para verificar su identidad. Una de las autoridades de certificación más conocidas es Verisign www.verisign.com, una empresa que proporciona diversos tipos de certificados, personales o para empresas, tras un proceso de verificación de la identidad del solicitante (previo pago de una tasa).
Los clientes Web tienen una pequeña base de datos con las claves públicas de diversas autoridades de certificación, a partir de las cuales se pueden verificar las claves públicas de otros servidores. De esta forma, si se codifica un mensaje con la clave pública de un determinado servicio Web, la información enviada sólo podrá ser interpretada por el destinatario del mensaje.

A partir de la criptografía de clave pública se ha desarrollado SSL (Secure Sockets Layer), un sistema de codificación de información propuesto por Netscape que codifica toda la información transferida al nivel de conexiones TCP, por lo que es compatible con todos los protocolos y servicios de Internet. SSL está incluido en los clientes Web de Netscape, Microsoft, IBM... El establecimiento de una conexión SSL consta de las siguientes fases:
El cliente y el servidor intercambian sus certificados de autenticidad (el cliente no tiene necesariamente uno). Estos certificados se validan con una autoridad de certificación. Este procedimiento es el llamado ‘sistema de autentificación de RSA’ www.rsa.com .El cliente genera una clave aleatoria, que envía al servidor tras codificarla con la clave pública de este; el servidor hace un proceso similar. De esta forma, las claves de encriptación sólo pueden ser conocidas por el cliente y el servidor. Esas llaves se utilizan para encriptar todos los datos intercambiados. El sistema criptográfico empleado en este punto es elegido como el más seguro entre todos los conocidos por el cliente y el servidor (por ejemplo, RC2, RC5, DES o IDEA). Adicionalmente, se puede utilizar un sistema de firma digital de los contenidos, como MD5. Como puede verse, SSL combina criptografía de clave pública, para el intercambio de las claves de cifrado, y criptografía de clave privada, para el intercambio de información. Esto es necesario porque la criptografía de clave pública implica muchos más cálculos
que la otra, por lo que no es factible para mantener una conexión cifrada.
La base de cualquier sistema de codificación es el tamaño de la llave empleada para encriptar el contendido de los mensajes. Con SSL, se pueden utilizar varios tamaños de llave desde 40 bits. En la actualidad, las llaves de 40 bits pueden ser desencriptadas en un tiempo razonablemente corto empleando sistemas informáticos de alto rendimiento, cosa mucho más complicada con las llaves de 128 bits o más. Sin embargo, Estados Unidos impone restricciones para exportar
fuera de su país aplicaciones que utilicen codificación de más de 40 bits. Estas restricciones no se aplican a los sistemas de
autentificación de identidad, que pueden utilizar llaves de cualquier longitud.
Otro sistema bastante utilizado es S-HTTP, una versión de HTTP que incorpora criptografía de clave pública para la autentificación y el intercambio seguro de datos. Sin embargo, S-HTTP sólo puede utilizarse para intercambiar datos entre clientes y servidores Web, mientras que SSL actúa de forma transparente para cualquier aplicación de comunicaciones TCP/IP.
Los siguientes enlaces proporcionan más información sobre temas relacionados con la seguridad y la criptografía en Internet:
El RSA FAQ about cryptography, un extenso manual de referencia, muy actualizado, que describe el funcionamiento de la mayoría de los sistemas de cifrado y autentificación que se utilizan en la actualidad. Se puede encontrar en: http://www.rsa.com/rsalabs/newfaq/.

Netscape dispone de información detallada sobre el funcionamiento de SSL, y la forma de integrar este sistema en nuestros propios desarrollos. Se puede consultar una introducción general a SSL, los certificados de servidores y otros temas relacionados en: http://search.netscape.com/newsref/ref/128bit.html.El W3 Consortium dispone de material de referencia sobre seguridad, en http://www.w3.org/Security/.

Los clientes Web muestran avisos de advertencia cuando la conexión pasa de modo normal a modo seguro y viceversa (el candado o llave abiertos de la esquina inferior izquierda de Netscape Navigator o Internet Explorer). A partir de este momento se puede asegurar la identidad del servidor remoto, y la total privacidad de los datos intercambiados. La siguiente pantalla muestra los detalles de una conexión segura establecida con una tienda electrónica.Location: https://www.aberdeeninc.com/abcatg/sidecheck.htm

File MIME Type: text/html
Source: Currently in memory cache
Local cache file: none
Last Modified: 7 de noviembre de 1997 23:15:04 Local time
Last Modified: 7 de noviembre de 1997 22:15:04 GMT
Content Length: 27076
Expires: No date given
Charset: iso-8859-1
Security: This is a secure document that uses a medium-grade
encryption key suited for U.S. export (RC4-Export, 128 bit with
40 secret).
Certificate: This Certificate belongs to:
www.aberdeeninc.com
Aberdeen LLC
Santa Fe Springs, California, US
This Certificate was issued by:
Secure Server Certification Authority
RSA Data Security, Inc.
US
Serial Number: 02:F3:00:1C:48
This Certificate is valid from Tue Aug 12, 1997 to Sat Aug 15,
1998
Certificate Fingerprint:
D6:26:95:63:07:90:F2:E2:21:50:AA:EE:4C:45:43:AF

Los clientes Web modernos disponen de una base de datos con los datos de varias autoridades de certificación, que se utilizarán para verificar las ‘identidades digitales’ de los servidores HTTP con los que se trate de establecer una conexión segura.( El siguiente ejemplo muestra las características de la autoridad de certificación de Verisign.)

 

Hosted by www.Geocities.ws

1