1 Introducción


 

Este es un documento sobre comercio-e y la seguridad que se necesita para hacer las transacciones comerciales electrónicas más seguras. Por lo
tanto, se hace necesaria una pequeña introducción al comercio-e y a la seguridad. Tema que se aborda en este primer capítulo.

1.1 ¿Qué es el comercio-e?

Antes de la aparición de grandes redes de comunicación como la Internet, las transacciones comerciales se realizaban personalmente, por teléfono,
por fax o a través del correo. La Internet ha revolucionado el modo de hacer negocios, mediante el uso de esta red de comunicación a nivel mundial que
permite reducir al mínimo la intervención humana. Esta reducción conlleva una reducción considerable de los costes con la consiguiente ventaja de
precios más competitivos.

El comercio electrónico (electronic commerce), o simplemente comercio-e (e-commerce), es el proceso para la realización de tratos (o
transacciones) comerciales en las que las entidades involucradas interactúan mediante sistemas electrónicos en vez de por medios de contacto físico
(o personal).

Básicamente, podemos distinguir tres tipos de comercio-e:

       El comercio-e entre empresas, más comunmente conocido como B2B (Business To Business, de Empresa a Empresa). Se centra en las
       transacciones comerciales que una empresa realiza con sus clientes, sus proveedores y sus entidades financieras. Como ejemplo, suponga
       una empresa que utiliza la Internet para la realización de pedidos a sus proveedores, incluyéndose los procesos de facturación y de pago. Para
       este tipo de comercio, se suelen utilizar estándares como el EDI (Electronic Data Interchange, Intercambio Electrónico de Documentos) que
       definen los formatos para los documentos intercambiados como, por ejemplo, el del pedido, el albarán, la factura, la orden de pago, entre otros.
       Generalmente, cada sector dispone de su propio estándar, pues cada sector suele tener características especiales que otros no tienen y, por lo
       tanto, no es muy recomendable hacer una abstracción general y obligar a todos a los mismos documentos.
       El comercio-e entre la empresa y el consumidor, también conocido por su acrónimo B2C (Business To Consumer, de Empresa a
       Consumidor). Este tipo de comercio-e es el que llevan a cabo grandes y pequeñas empresas con nosotros los potenciales consumidores para
       la venta de libros, de música, de computadoras, etc. Actualmente, este tipo de compraventa se realiza a través de páginas web en las que el
       consumidor rellena un formulario con los datos de su tarjeta de crédito. Para asegurar el intercambio de datos, se suelen utilizar protocolos
       como el SSL o el SHTTP.
       El comercio-e entre la empresa y la administración o B2A (Business To Administration, de Empresa a Administración). Consiste en la
       realización de las transacciones que debe llevar a cabo una empresa con la administración (pública), generalmente, para el pago de impuestos
       como el IVA, el impuesto de sociedades, la cotización a la Seguridad Social de los empleados, etc. También se utiliza en la publicación de las
       ofertas (o convocatorias) gubernamentales y la correspondiente recepción de ofertas enviadas por las empresas interesadas.

1.1.1 Algo más sobre el B2B

De los tres tipos de comercio-e, el más avanzado actualmente que, a su vez, es el que más dinero mueve (y moverá en el futuro) es el comercio-e
entre empresas o B2B. Se ha calculado que el 80% de las transacciones-e pertenecerán al B2B. Se ha estimado que para el año que viene (2003),
habrá aproximadamente unas 14 000 empresas españolas que lo usen. A mayo de 2001, aproximadamente el 21% de las los proveedores realizaron
algún tipo de comercio-e B2B. Para este año 2002, el 46.2% de los proveedores calculan que realizarán B2B con sus clientes. Por su parte, el 41.9%
de los clientes estiman que realizarán B2B con sus proveedores.

Veamos ahora para que utilizan las empresas, a fecha de hoy, el comercio-e. En su mayor parte, para la recepción/realización de pedidos, pues agiliza
su procesamiento enormemente. Le siguen la logística, la negociación, la facturación, la catalogación y el diseño de nuevos productos.

1.2 Ventajas y desventajas del comercio-e

El comercio-e proporciona un sinfín de ventajas que no tiene el comercio tradicional. A continuación, le enumero las más importantes.

Una de las contribuciones más importantes del comercio-e es la reducción de los costes de las transacciones. Actualmente, una transacción
realizada por una persona puede medirse en euros; en cambio, una transacción-e puede medirse en unos pocos céntimos. Esto conlleva que el precio
de la mercancía o de la materia prima comprada o vendida sea menor y, en consecuencia, el precio final para el cliente también lo sea.

Si lo medita un poco, la encontrará evidente. La mayor parte de los procesos de negocio suelen ser actividades rutinarias que pueden llevarse a un
programa que la realizará de una manera mucho más rápida y óptima que el ser humano. Esto, naturalmente, aumenta la velocidad de la transacción y
reduce los costes, pues la máquina es mucho más barata que un empleado. Veamos esto desde otra perspectiva. Cuando un cliente realiza un pedido
del modo tradicional, tiene que coger el teléfono, pedir a sus proveedores las listas de precios y, finalmente, realizar el pedido al proveedor más barato.
Actualmente, el cliente se dirige al escaparate (en forma de web) del proveedor. No tiene que esperar comunicaciones telefónicas y, además, puede
comparar los precios en cuestión de segundos. Al mismo tiempo, los proveedores ganan en catalogación, pues el coste de mantener el catálogo en la
web es siempre mucho más barato que su impresión y su posterior envío a través del correo postal, lo que puede ser un coste prohibitivo para muchas
pymes.

Mejora la calidad de servicio, pues se reduce el tiempo de espera de los clientes que ya no tienen que esperar largas colas.

Aquellas empresas que se encuentran en la Internet tienen nuevas oportunidades de compraventa, independientemente de su tamaño o localización
geográfica. Esto es muy interesante de cara a las pymes que de otra manera tendrían vetada su introducción a esos mercados debido a su elevado
coste. En otras palabras, se abren nuevos mercados de compraventa.

Con muchos productos, en especial los electrónicos (como, por ejemplo, los textos, la música, las imágenes o los programas de computadora), se
pueden realizar las transacciones directamente entre el fabricante/vendedor y el consumidor a través de la red, produciéndose así la eliminación de
intermediarios innecesarios. Esto no quiere decir que desaparezca el concepto de comercial o de distribuidor en todos los sectores. En el caso de
productos con características técnicas complejas para los que es necesaria una explicación de sus ventajas, no se verá la pérdida de los
intermediarios. Por otra parte, el comercio-e puede conllevar la aparición de nuevos intermediarios (o participantes) como es el caso de las entidades
certificadoras que aseguren las transacciones.

Aquellas empresas, que han decidido automatizar (todo o parte) de sus procesos de negocio, permiten a sus clientes el autoservicio, puesto que ya
no es necesaria la intervención de ningún empleado para la recepción o exposición de sus productos. Con el comercio-e, los clientes se sirven de una
identificación y de una contraseña que les permite la accesión a la web de su proveedor con los últimos precios y los últimos artículos. Esto, a su vez,
permite la comparación de precios y la realización de pedidos sin la pérdida de tiempo en gestiones innecesarias y sin la presencia de ningún vendedor
que influya en la decisión de compra. Al mismo tiempo, proporciona un soporte de compraventa 24x7x365 (esto es, 24 horas al día, los 7 días de la
semana, durante los 365 días del año).

Gracias a la automatización del negocio y a la alta velocidad de las transmisiones a través de la red, se consigue una reducción del tiempo de
abastecimiento. El sistema informático de una empresa puede realizar un pedido tan pronto como detecta la escasez del producto. A su vez, el
proveedor que recibe el pedido puede pasar automáticamente el pedido al almacén sin pérdida de tiempo, puesto que todo el proceso de gestión se
encuentra informatizado. De esta manera, se reduce la intervención humana y, en consecuencia, el del tiempo de abastecimiento (o respuesta). Este
tipo de automatización se encuentra muy extendido entre los supermercados, las librerías, los restaurantes, etc.

El comercio-e mejora la relación con los clientes. Los aspectos más interesantes de este acercamiento al cliente se consiguen en los servicios de
pre y posventa, así como en los de documentación de los artículos. Para conseguirlo, los proveedores ponen a disposición de sus clientes los manuales
y las preguntas más realizadas por sus clientes. De esta forma, cuando un cliente desea saber algo más sobre el producto, puede remitirse a su
manual o bien a las FAQs que le permitirán el acceso a otras preguntas/problemas realizados por otros clientes, reduciéndose el tiempo de atención al
cliente.

Por desgracia, el comercio-e conlleva una serie de inconvenientes potencialmente peligrosos durante el proceso de compraventa. Tenga en cuenta que
en el comercio tradicional, las transacciones se realizan, más o menos, personalmente (ya sea cara a cara, por teléfono o por fax). Ahora, se utiliza la
Internet, una red de comunicación abierta que no puede considerarse como un medio altamente seguro, si no se toman ciertas medidas para la mejora
de la seguridad de las transacciones. Básicamente, encontramos las siguientes desventajas.

El miedo a las transacciones sin resguardo. Este miedo lo tienen, básicamente, los consumidores del comercio-e B2C que no reciben resguardo
alguno en el momento de la compra, lo que les dificulta las reclamaciones en el caso de que no queden satisfechos con ella. Por suerte, el comercio-e
B2B se encuentra mucho más avanzado que el B2C, puesto que las empresas involucradas suelen firmar acuerdos previos que acrediten que
realizarán acciones de compraventa, siempre que sigan un determinado estándar como, por ejemplo, el EDI.

La falta de acuerdos internacionales para armonizar las distintas legislaciones nacionales existentes sobre comercio-e, así como sobre el pago de
impuestos que graban los bienes y servicios. En la UE, se está trabajando muy duro para la aceptación de una legislación común a todos los países
miembros. Para que se dé cuenta de la importancia, le expondré un caso. La mayoría de los casinos virtuales situan sus domicilios sociales en países
donde los impuestos son bajos, beneficiándose de estas ventajas fiscales, aunque después realizan sus operaciones desde países con impuestos
mucho más grabados.

Falta de protección a los consumidores en cuanto a publicidad engañosa y no deseada, del fraude, de los contenidos ilegales y del uso de los datos
involucrados durante el proceso de compraventa. En este último caso, el consumidor no desea que el vendedor conozca sus datos bancarios como el
número de cuenta o el de la tarjeta de crédito, ni su banco conozca los de la compra que acaba de realizar.

Existen muchos estándares y protocolos de comercio-e, algunos de ellos abiertos y otros propietarios. El problema es la inexistencia de protocolos
consolidados y la incompatibilidad entre los protocolos existentes, lo que obviamente no favorece la integración del comercio-e en las
transacciones.

Una nota final. Dos de los protocolos más conocidos y utilizados actualmente son el SET (Secure Electronic Transaction, Transacción Electrónica
Segura) y el SSL (Secure Socket Layer, Capa Segura de Sockets) y no resuelven todos los problemas de las transacciones-e. Por ejemplo, no hay
manera de asegurar ante un tribunal que un cliente hizo una compra y que el vendedor la ha entregado. A pesar de todo, las empresas (de confianza)
no suelen producir (casi) ningún problema y, por tanto, no hay que caer en la desconfianza electrónica. Particularmente, yo ya he realizado algunas
compras on-line y, de verdad, no me he arrepentido de ninguna de ellas, aunque los retrasos en la recepción, en alguna, fueron excesivos.

1.3 Entidades involucradas en una transacción-e

Una transacción no suele involucrar únicamente a las partes compradora y vendedora; además, pueden aparecer los bancos y otras. En las
transacciones-e, podemos distinguir básicamente las siguientes.

Por una parte, tenemos al comprador (customer), que adquiere el bien o servicio, y al vendedor (seller), que traspasa la propiedad del bien adquirido o
que realiza el servicio estipulado a cambio de un precio. El comprador (o cliente) consulta un catálogo y decide su cesta de la compra. A continuación,
se dirige al vendedor para el intercambio de las propiedades de los bienes o la estipulación del servicio.

Para el proceso de pago, aparecen las entidades financieras (financiers) que se encargan de su autorización y del movimiento de dinero entre las
cuentas del comprador y del vendedor. En este proceso de autorización y realización de pagos, pueden aparecer involucradas varias entidades,
además de los bancos del comprador y del vendedor; todo depende del modo de pago. Por una parte, tenemos a los bancos del comprador y del
vendedor que en caso de no ser el mismo, requieren una pasarela interbancaria para el movimiento del dinero del banco del comprador al del vendedor.
Si el comprador paga con tarjeta, además se involucra la empresa que la expedió. Y si el pago es muy pequeño, aparecerá un broker (o intermediario)
que será el encargado de realizar el micropago.

Para regular la seguridad de la transacción-e, se necesita la participación de una autoridad de certificación (certification authority) o CA. Esta
entidad expide certificados a sus clientes, los cuales utilizan posteriormente para identificarse y autenticarse durante el proceso de compraventa. De
esta forma, el comprador sabe a quién compra y el vendedor sabe quién realiza la compra.

En muchos casos, también se necesita la intervención de una empresa logística (logistic company) que se encarga del movimiento del bien adquirido
hasta las instalaciones del comprador.

Se recomienda que todas estas entidades involucradas se encuentren comunicadas mediante una red de comunicación como la Internet para hacer,
así, la transacción mucho más rápida y barata.

1.4 Requisitos básicos de seguridad en las transacciones-e

El principal problema de las transacciones-e está relacionado con la seguridad. Según la [RAE, 21], la seguridad es la cualidad de seguro,
definiéndose el concepto de seguro como libre y exhento de peligro, daño o riesgo. La seguridad es un aspecto clave para generar confianza en el
comercio-e. Como ya le he dicho antes, la seguridad es de vital importancia puesto que se utiliza una red de comunicación abierta que produce a sus
usuarios cierto grado de inseguridad (en muchos casos, diría yo que excesiva).

Si trabaja en la rama de la informática o de la telecomunicación y todavía no ha encontrado la rama a la que le gustaría dedicarse, puede que lo
siguiente le influya a la hora de elegir la rama de seguridad. Según estudios recientes, esta actividad está experimentando un enorme crecimiento y se
espera que para 2005 genere unos movimientos de cerca de 15 300 millones de euros. Esta previsión supone un crecimiento anual del 23% cada año.
Los cuatro mercados de la seguridad en la Internet que más dinero mueven son: el de los cortafuegos (o firewalls) que está sufriendo un crecimiento
vertiginoso en los últimos años con cerca del 42% anual; el de los procesos de autenticación, autorización y administración, conocidos conjuntamente
como las 3A, para el que se estima el mayor crecimiento hasta 2005; el de las aplicaciones informáticas de cifrado; y el de los antivirus. Desde el
11-S, también está creciendo la demanda de seguridad física de la información. Desde el atentado, muchas empresas se han dado cuenta de la
importancia de tener replicada su información sensible (o crítica) en distintos servidores dispersos en localizaciones geográficas distintas.

Los requisitos básicos que deben tenerse en cuenta a la hora de diseñar soluciones para la seguridad del comercio-e son:

       La confidencialidad que consiste en la transmisión de la información de manera reservada. Se consigue ocultando el contenido de los
       mensajes transmitidos entre las entidades involucradas en la transacción-e. Se utilizan los cifradores.
       La integridad. Se necesita que los mensajes transmitidos lleguen completos y sin modificaciones. Para conseguirlo, se utilizan las huellas o
       los MACs.
       La identificación y la autenticación de las entidades. Cuando una entidad se pone en contacto con otra y antes de que ésta acepte sus
       mensajes, es necesario que el emisor se identifique y autentique, de la misma manera que cuando abrimos una sesión en nuestra computadora:
       primero, nos identificamos (propocionando un login) y, después, autenticamos ese login mediante nuestra contraseña. Para conseguirlo, se
       utilizan, entre otro elementos, los identificadores, las contraseñas y los PINs.
       La irrefutación de los datos para evitar que las partes no puedan rechazar el contrato estipulado. Para conseguirlo, se usan, básicamente, las
       firmas digitales.

1.4.1 El uso de la criptografía

La criptografía (cryptography) es el arte o ciencia de escribir en clave o de modo enigmático. La etiología de la palabra la descompone en "cripto" que
proviene del griego y significa oculto o secreto y en "grafía" que significa escritura. A la persona que practica la criptografía se la conoce como
criptógrafo (cryptographer).

Por otra parte, está el criptoanálisis (cryptoanalysis) que es la ciencia o arte de descifrar mensajes cifrados (más comúnmente conocidos como
criptogramas) sin la correspondiente llave (o clave) utilizada. Hay que destacar que no se considera como criptoanálisis el descubrimiento del código
(o algoritmo) del cifrador. Un criptoanalista (cryptoanalyst) es, pues, la persona que practica el criptoanálisis.

La criptología (cryptology) es esa parte de las matemáticas que combina la criptografía y el criptoanálisis, definiéndose como criptólogo
(cryptologist) a su practicante.

Un criptosistema (cryptosystem) es un conjunto de reglas, principios y elementos que conjuntamente contribuyen (o buscan) la consecución de los
requisitos vistos anteriormente para la seguridad de las transacciones-e: la confidencialidad, la integridad, la identidad, la autenticación y la
irrefutación. El objetivo de este documento es la exposición de los distintos elementos que pueden utilizar los diseñadores de criptosistemas que
aseguren las transacciones en la Internet. Si, en cambio, es usted un asesor de seguridad, podrá utilizar los conocimientos, que va a adquirir con este
documento, para la evaluación de los criptosistemas existentes en el mercado.
 


2 Confidencialidad

La confidencialidad (confidentiality) es el acto de transmitir información de manera reservada entre dos o más entidades. Esto se consigue mediante
la ocultación del contenido de la transmisión, de tal manera que si alguien la intercepta, intencionada o deliberadamente, el intruso no pueda
comprenderla sin un esfuerzo criptoanalítico.

Para la consecución de la confidencialidad, se utilizan los cifradores. Estos elementos criptográficos se sirven de una o más llaves para la generación
de un galimatías a partir de los datos. Atendiendo al número de llaves que se utilicen, se diferencia entre cifradores simétricos o convencionales (una
única llave) y cifradores asimétricos (dos llaves).

2.1 Conceptos previos

Antes de comenzar, es necesario que le introduzca una serie de conceptos que voy a utilizar a lo largo de todo el documento.

Un texto en claro (plain text o cleartext) es un conjunto de datos sin cifrar que envía una entidad a otra (y, por tanto, legible sin esfuerzo
criptoanalítico). Una entidad (entity) es alguien o algo que envía, recibe o manipula información como, por ejemplo, una persona o una computadora.
Los datos pueden consistir en un archivo, una imagen o cualquier conjunto de datos que espera su receptor.

Para la consecución de la confidencialidad de estos datos durante la transmisión, el emisor los convierte en un galimatías que, en principio, sólo el
receptor entiende. Se define el concepto de cifrado (encryption) como el proceso de transformación de un texto en claro en un galimatías, el cual se
conoce como criptograma (cryptogram) o texto cifrado (ciphertext). Al proceso inverso, se le conoce como descifrado (decryption). (Véase la
figura 2.1 para una representación gráfica).
 

Figura 2.1 Cifrado y descifrado

Generalmente, estos conceptos se representan en forma matemática, lo que facilita enormemente la comprensión de los criptosistemas. El texto en
claro se denota mediante una P (de plaintext); por su parte, el criptograma (o texto cifrado) se denota mediante una C (de cryptogram). Por otra parte,
el proceso de cifrado se denota mediante una e (de encryption) y el de descifrado por una d (de decryption). (A lo largo del documento, usaré letras
minúsculas para representar las funciones criptográficas y las mayúsculas para el resto de elementos criptográficos). Luego, el proceso de cifrado
puede denotarse como

C = e(P)

que puede leerse como "cifra el texto P para obtener el criptograma C". Mientras que la notación

P = d(C)

puede leerse como "descifra el criptograma C para obtener el texto en claro P".
 

2.2 El cifrador y las llaves

En este momento, ya sabe que los procesos de cifrado y descifrado son transformaciones de un conjunto de datos a otro. Para ello, se utilizan los
cifradores. Un cifrador (cipher) es una función matemática que transforma un texto en claro P en un criptograma C, y viceversa (véase la figura 2.1
anterior). Observe que el cifrador lleva a cabo tanto el proceso de cifrado como el de descifrado y, por lo tanto, no existe el concepto de descifrador.
Lo que ocurre es que existen dos funciones relacionadas entre sí: una que realiza el proceso de cifrado y otra que realiza el de descifrado. Atendiendo
a lo que desé, debe pedirle al cifrador que lleve a cabo una operación u otra.

El cifrador para llevar a cabo sus funciones se sirve de, al menos, una llave. Una llave (key) es un conjunto de signos, letras, números y otros
caracteres que sirve para cifrar un texto o descifrar un criptograma. Esta llave la utiliza internamente el cifrador para conseguir que el criptograma
dependa de la llave (véase la figura 2.2). De esta manera, no se puede descifrar sin el conocimiento de la llave utilizada, aún cuando se conozca el
cifrador utilizado. Las llaves se denotan, generalmente, mediante una K (de key).
 

Figura 2.2 Cifrado con una llave


Cuando se desea especificar que un proceso de cifrado se sirve de una llave K para llevar a cabo su propósito, matemáticamente hablando, se
denotará mediante:

C = e(P, K)

que puede leerse como: "cifra el texto P usando la llave K". Por su parte, el proceso de descifrado se denota mediante:

P = d(C, K)

que puede leerse como: "descifra el criptograma C usando la llave K".

Dadas dos llaves K1 y K2, ambas distintas, y un texto P, se puede decir que la siguiente expresión es cierta:

e(P, K1) != e(P, K2)

o lo que es lo mismo: si se cifra un texto P con dos llaves distintas, muy probablemente, por no decir seguro, se obtienen dos criptogramas distintos.

2.2.1 Cifradores públicos o secretos y un poco de historia

Hasta la década de los 70, los venededores de cifradores utilizaban una política de total secreto con respecto al código (o diseño) de los cifradores
que vendían. Esto desembocó en que los compradores de software y de hardware criptográfico no sabían qué estaban comprando, puesto que no
existía, por aquel entonces, ninguna organización que validara su eficacia y no tenían más remedio que basarse en lo que les indicaba su proveedor. La
NBS (National Bureau of Standards, Agencia Nacional de Estándares) de los EE.UU., ahora conocida como NIST (National Institute of Standards
and Technology, Instituto Nacional de Estándares y Tecnología), se dió cuenta de este problema y, mediante una convocatoria pública, inició la
búsqueda para la obtención de un cifrador único y público.

Como resultado de esta convocatoria, la NBS recibió varias propuestas, siendo la procedente de IBM la vencedora. El cifrador se bautizó como DES
(Data Encryption Standard, Estándar para el Cifrado de Datos) y se convirtió en el estándar federal en los EE.UU. para las aplicaciones no
clasificadas.

Como acabo de decirle, en los primeros años de la criptografía moderna, las funciones de cifrado y descifrado eran conocidas sólo por sus diseñadores
y algunos pocos afortunados más. Muchos pueden pensar que esto es lo mejor, pero están muy equivocados. La experiencia ha demostrado que el
código del cifrador debe ser público para que, de esta forma, se someta al análisis de la comunidad científica antes de su utilización. Un ejemplo claro
de esto es el cifrador DES, que en sus cerca de 25 años de vida, no ha sido quebrantado. Aunque se ha demostrado que su tamaño de llave (de 64 bits)
se ha quedado pequeño (y obsoleto) para la tecnología computacional de hoy; y ésta es, básicamente, la única razón por la que se ha dejado de utilizar
en la actualidad. En el otro extremo, tenemos los sistemas de comunicación GSM que utilizaron una política de absoluto secreto. Una vez se
descodificó su código, y en menos de 48 horas, la comunidad científica demostró sus deficiencias de seguridad. Evidentemente, si el protocolo GSM
se hubiera sometido al análisis previo de la comunidad científica, no se habría utilizado tal cual se conoce hoy.

La moraleja de esta historia es que sólo si somete su cifrador o su criptosistema al análisis de la comunidad científica, sabrá si éste es seguro y válido
para su utilización.

2.2.2 Dependencias de la llave

Acabamos de ver que para poder construir un cifrador seguro, es necesario que su forma de trabajo se haga pública. En este punto, puede surgirle la
siguiente pregunta: ¿en dónde radica la seguridad del cifrador? Evidentemente, en alguna parte, y ésta es la llave. Si se hace el criptograma
dependiende de una llave, el conocimiento del algoritmo de cifrado no sirve de nada, sino se conoce la llave con la que el usuario cifró su mensaje.

2.2.3 Obtención de la llave mediante un ataque por fuerza bruta

Un ataque por fuerza bruta (brute force attack) consiste en, dado un criptograma, ir probando, una a una, las distintas llaves posibles. Por lo tanto, a
través de un ataque por fuerza bruta, se puede determinar la llave que se utilizó para cifrar un determinado texto. Así pues, cuántos más recursos
computacionales se necesiten y cuánto mayor sea la longitud de la llave, más tiempo se requerirá para comprobar una llave. Por ejemplo, suponga un
tamaño de llave de 128 bits, lo que produce un total de 2128 llaves, esto es, 3.4·1038 llaves posibles para cifrar un texto. Si se necesita un segundo para
comprobar si una determinada llave ha sido utilizada para cifrar un determinado texto P, entonces serán necesarios 3.4·1038 segundos para la
comprobación de todas las llaves o, lo que es lo mismo, 3.9·1033 días o 2,7·1030 años.

2.3 Cifradores convencionales o simétricos

Un cifrador simétrico (symmetric cipher) o cifrador convencional (conventional cipher) es aquél que utiliza la misma llave K tanto para el cifrado
como para el descifrado (de ahí, el término simétrico). Evidentemente, la llave utilizada debe ser conocida, únicamente, por los participantes, los
cuales deben mantenerla en absoluto secreto. Por esta razón, este tipo de cifradores también se conocen como cifradores privados (private ciphers)
o cifradores de llave secreta (secret/private key ciphers). Como sólo utilizan una única llave, también se conocen como cifradores de llave única
(single/one key). La figura 2.3 muestra una representación gráfica de los procesos de cifrado y descifrado en cifradores simétricos.

 
Figura 2.3 Cifrado y descifrado simétricos


Veamos un ejemplo sencillo de este tipo de cifrador. Suponga el alfabeto español, ES = {a, b, c, d...}. Ahora, suponga una función f() que asigna a cada
letra del alfabeto otra del mismo, como, por ejemplo, la desplazada d letras a la derecha. Por ejemplo, si tiene la letra a y un desplazamiento de 1, la
función cifrará la letra a como b, la b como c, y así sucesivamente, hasta la z que se cifrará como a. Luego, si tiene el texto "ibm", con este sistema, se
cifrará como "hal".

El proceso de descifrado es, evidentemente, sencillo. Si el cifrado ha consitido en el desplazamiento de una letra d letras a la derecha, el de descifrado
consistirá en trasladar las letras del criptograma d letras a la izquierda. De esta manera sencilla, se utiliza la misma llave (en nuestro caso, el
desplazamiento d) para el cifrado y el descifrado.

2.3.1 Algunos cifradores simétricos

Los cifradores simétricos más conocidos y utilizados son el DES, el TDES, el IDEA y el RC5. El NIST ha vuelto a iniciar una convocatoria para la
obtención de un nuevo estándar de cifrado simétrico que, inicialmente, se bautiza como AEA y que muy probablemente ya se encuentre en la calle,
cuando usted lea estas líneas.

El DES (Data Encryption Standard, Estándar para el Cifrado de Datos) fue diseñado por IBM en la década de los 70. Se convirtió en el estándar por
excelencia, pero su tamaño de llave (de 64 bits) lo ha dejado obsoleto, debido a que la potencia computacional actual facilita un ataque por fuerza
bruta. Por esta razón, el gobierno norteamericano ha dejado de utilizarlo. En su larga trayectoria, no se le conoce ninguna quebradura, siendo su
tamaño de llave el único responsable de su desuso. Durante su vida, ha sido y es de libre uso.

El TDES (Triple DES) es una variación del DES dotada de mayor confiabilidad porque utiliza una llave de 128 bits (en vez de los 64 bits del DES).
Para ello, el TDES recibe un texto P y una llave K de 128 bits, la cual se divide en tres llaves K1, K2 y K3 que se utilizan como sigue:

    1.Cifra P con K1: C1 = e(P, K1).
    2.Descifra C1 con K2: C2 = d(C1, K2). Como utiliza una llave que no es la que utilizó para el cifrado, en vez de obtener P, obtiene un nuevo
       galimatías.
    3.Finalmente, cifra C2 con la llave K3: C = e(C2, K3).

Realmente, el TDES suele recibir tres llaves DES o bien dos. En este último caso, se reutiliza la primera para llevar a cabo el tercer paso.

El cifrador IDEA (International Data Encryption Algorithm, Algoritmo Internacional para el Cifrado de Datos) fue diseñado por Xuejia Lai y James
Massey del Swiss Federal Institute of Technology (Instituto Federal Suizo de Tecnología) en 1990. Es seguro, tiene un tamaño de llave de 128 bits (el
doble que el DES) y, por estas razones, se está convirtiendo en el principal candidato para sustituir al DES, muy probablemente hasta que aparezca el
AEA. Es gratuito para su uso no comercial, siendo necesaria una licencia para su uso comercial. Está patentado en Europa y EE.UU. por
Ascom-Tech AG.

El RC5 fue diseñado por el profesor Rivest del MIT y es el utilizado por el Netscape en su sistema de seguridad SSL. La ventaja de este cifrador con
respecto a los tres anteriores es que permite la utilización de varios tamaños de llave. Básicamente, existe una ventaja que convierte a los cifradores
que aceptan llaves de longitud variable en más eficientes y seguros frente a los que aceptan sólo llaves de un determinado tamaño. Estos algoritmos
se adaptan mejor a los avances computacionales. A medida que avanza la tecnología, el usuario puede aumentar su tamaño de llave, adaptándose así a
la nueva tecnología sin tener que cambiar de cifrador.

Para finalizar, nos queda el AEA. El AEA (Advanced Encryption Algorithm, Algoritmo Avanzado de Cifrado) es el próximo estándar mundial. Hasta
hace algunos años, el DES era el cifrador por excelencia, pero su tamaño de llave lo ha convertido en atractiva miel para los golosos. Por ello, el NIST
inició una nueva convocatoria de la que se extraerá el futuro estándar de cifrado simétrico, que será conocido muy probablemente como AEA. Esta
elección afectará considerablemente a la industria por las siguientes razones:

       Se convertirá en el estándar del gobierno norteamericano en sus comunicaciones y, en consecuencia, de todas las grandes empresas del
       mundo.
       Será seguro, ya que está siendo sometido al análisis de la comunidad científica.
       Su precio será bajo, puesto que se espera se desarrolle en hardware en grandes cantidades.

2.4 Cifradores asimétricos o de llave pública

Uno de los principales problemas con el que nos enfrentamos cuando utilizamos el cifrado simétrico es el intercambio de la llave, conocido
comunmente como el problema del intercambio de llaves (key distribution key). A finales de la década de los 70, los investigadores Whitfield Diffie
y Martin E. Hellman, por una parte, y Ralph Merkle, por otra, repararon en este problema y propusieron una solución que consistía en utilizar dos
llaves, en vez de una. La idea es mantener una en secreto y hacer pública la otra. Esta publicación se puede realizar sin problemas a través de un
medio de comunicación inseguro como es el caso de la Internet. ¿Por qué se puede hacer una pública? Siga leyendo...

Un cifrador asimétrico (asymmetric cipher) es aquél que utiliza una pareja de llaves: una para cifrar y la otra para descifrar. Suponga una pareja de
llaves, K1 y K2. La idea es que cuando se cifra con la llave K1 sólo su pareja K2 puede descifrar el criptograma, y viceversa (véase la figura 2.4). Es
muy importante que le quede claro que lo que cifra una llave no lo puede descifrar ella misma, por lo que P != d(e(P, K1), K1). También es importante
destacar que de la misma manera que se utiliza la llave K1 para cifrar y K2 para descifrar, pueden utilizarse de manera inversa, esto es, puede usarse
K2 para cifrar y K1 para descifrar. Luego, las dos condiciones siguientes son ciertas: P = d(e(P, K1), K2) y P = d(e(P, K2), K1).

 
Figura 2.4 Cifrado y descifrado asimétricos


Generalmente, los usuarios deben generar una pareja de llaves. Una de las cuales debe quedarse y no comunicar a nadie y, por esta razón, se conoce
como llave privada (private/secret key). La otra debe de hacerla pública, por lo que se conoce como llave pública (public key). Generalmente, se
suele denotar la pareja de llaves como (E, D), donde la llave E (de encrypt) es la que se utiliza para cifrar los mensajes, y evidentemente será la
privada, y D (de decrypt) será la pública y la utilizarán los demás usuarios para descifrarlos. Entre las dos llaves existe una relación matemática que
hace muy dificil que conocida una llave se pueda obtener su pareja.

2.4.1 Concepto de función unidireccional

La criptografía asimétrica hace uso de las funciones unidireccionales (one-way functions). Estas funciones son aquéllas cuyo cálculo en un sentido
es sencillo, mientras que en el otro es inviable para la potencia computacional actual, es decir, dada la función e() y un valor P (en nuestro caso, el
texto a cifrar), es sencillo calcular C (esto es, el criptograma), donde C = e(P). Pero conocidos e() y C, es muy dificil obtener la función inversa e-1()
que devuelva el texto P, donde P = e-1(C). Observe que se ha dicho difícil, pero no imposible.

Los cifradores asimétricos se basan en las funciones unidireccionales con abertura. Una función unidireccional con abertura (trapdoor one-way
function) es una función unidireccional con la característica particular de que presenta una abertura que permite obtener el cálculo en el sentido
contrario. Esta abertura es la pareja de la llave que se utilizó para generar el criptograma. Matemáticamente hablando, conocida la función e() y el
valor de la llave de cifrado E es fácil obtener el criptograma C, donde C = e(P, E), siendo posible obtener P a partir de d(C, D). Todavía sigue siendo
dificil obtener la función inversa e-1() para obtener P a través de e-1(C).

2.4.2 Algunos cifradores asimétricos

El más conocido, seguro y utilizado es el RSA que fue creado en 1978 y debe su nombre a sus autores, los profesores del MIT Rivest, Shamir y
Adleman, que posteriormente crearon la compañía RSA Security, Inc. Se encontraba patentado hasta el 20 de setiembre de 2000. Puede ser utilizado
con llaves de diferentes tamaños, aconsejándose las llaves de 1 024 bits.

Otro menos conocido es el cifrador ElGamal, creado inicialmente para firmas digitales y que, posteriormente, se modificó para cifrado asimétrico.

2.5 Ventajas y desventajas de los cifradores convencionales y de llave privada

Ha llegado el momento de estudiar cuáles son las ventajas y desventajas de cada uno de los cifradores. Generalmente, la ventaja de un cifrador es la
desventaja del otro. Por ello, los trataré conjuntamente según los siguientes apartados: distribución de la llave, consumo de CPU, tamaño de las llaves
y facilidad de robo de las llaves. Éstas no son las únicas, pero sí las más importantes.

Distribución de la llave

Ha quedado patente que los cifradores asimétricos facilitan enormemente la distribución de las llaves, permitiendo que se lleve a cabo a través de
canales inseguros. Lo que no ocurre con los cifradores simétricos que requieren que, necesariamente, se lleve a través de canales seguros
físicamente.

Consumo de CPU

Los cifradores simétricos requieren menos consumo de CPU, aproximandamente 1 000 veces menos y, por tanto, tardan menos en llevar a cabo su
trabajo. Esto no es un problema para usuarios finales que llevan a cabo pocas transacciones, además de llevarlas a cabo muy raras veces. Pero es un
aspecto muy importante en los grandes servidores que tienen que hacer frente a cifrados y descifrados continuamente como, por ejemplo, el servidor
de un empresa de venta electrónica que ve como su servidor tiene que suministrar las páginas web de sus clientes además de llevar a cabo el cifrado y
descifrado durante la fase de compraventa de un producto.

Tamaño de llaves

Los cifradores convencionales requieren llaves relativamente cortas (de unos pocos bits, generalmente de poco más de un par de centenares).
Mientras que los de llave pública requieren miles de bits. Por ejemplo, el cifrador asimétrico RSA suele usarse con llaves de 1 024 bits en comparación
con el cifrador simétrico DES que requiere 64 bits. Esto quiere decir que los grandes servidores, que deben guardar llaves, necesitan más espacio para
sistemas de llave pública (o asimétricos) que para los sistemas convencionales (o simétricos).

Facilidad de robo de las llaves

Los cifradores convencionales requieren que cada llave se replique en ambos extremos, tanto en el emisor como en el receptor. Además, ambos deben
ayudar a mantener la llave en absoluto secreto. En cambio, los cifradores de llave pública tienen replicada la llave privada en una única computadora y
la llave pública puede estarlo en varias. Por lo tanto, la seguridad se puede relajar a una única computadora, naturalmente, aquélla en la que se
encuentra la llave privada.

Por otra parte, es evidente que si la llave privada de un cifrador convencional se roba, el intruso puede hacerse pasar por cualquiera de los extremos
sin que el otro se dé cuenta. En cambio, en un sistema público, si se roba la llave pública no pasa nada (a grandes rasgos), pues sólo podrán leer los
mensajes de uno a otro. Pero en ningún momento, podrá modificarlos.

2.6 Los criptosistemas híbridos

Sabemos que los cifradores simétricos (o convencionales) son más rápidos que los asimétricos (o de llave pública). También sabemos que los
simétricos presentan el problema del intercambio de llaves que solucionan los asimétricos. Qué le parece si utilizamos un sistema híbrido que utilice lo
bueno de cada uno de ellos. Un criptosistema híbrido (hybrid cryptosystem) es, básicamente, un principio que decide utilizar un cifrado simétrico con
una llave S, conocida como llave de sesión (session key), para cifrar un texto P y el cifrado asimétrico para autenticar a los participantes, o bien, para
que el extremo, que generó esta llave de sesión S, se la notifique al otro.

El criptosistema híbrido puede construirse desde dos puntos de vista: mediante una sesión (permitiéndose el envío de varios mensajes) o mediante la
construcción de un sobre digital (que sólo permite el envío de un mensaje).

2.6.1 Criptosistema híbrido mediante una sesión

Una sesión (session) es una comunicación entre entidades durante la cual se intercambian información, generalmente en forma de dos o más
mensajes. Toda sesión consiste, al menos, en dos fases:

    1.La fase de apertura, durante la cual, los extremos se autentican el uno al otro y deciden cuál será la llave de sesión a utilizar durante el resto
       de la sesión. Esta fase se lleva a cabo mediante criptografía asimétrica.
    2.La fase de transferencia. Como los extremos ya se han autenticado el uno al otro, y ambos conocen la llave de sesión S a utilizar, entonces
       ya no son necesarios los cifradores asimétricos y se pasa a la utilización de los simétricos disminuyendose así, en ambos extremos, el
       consumo de CPU.

Por ejemplo, suponga los usuarios A y B, cada uno de los cuales tiene una pareja de llaves asimétrica (EX, DX). E sistema puede trabajar como sigue:

    1.A genera la llave de sesión S que van a utilizar ambos extremos.
    2.A continuación, A cifra la llave S mediante un cifrado doble para notificársela al otro extremo: C = e(e(S, DB), EA). Y le envía C a B.
    3.B al recibir C, lo descifra y obtiene la llave de sesión S: S = d(d(C, DA), EB). Desde este momento, ya pueden comunicarse mediante cifrado
       simétrico.

El ejemplo anterior es un escenario de tantos posibles. Una variación podría ser que en vez de ser el usuario A el que decida la llave de sesión, sean
ambas entidades conjuntamente las encargadas de hacerlo.

2.6.2 Criptosistema híbrido mediante sobre digital

El objetivo es construir lo que se conoce como sobre digital (digital envelope) que consiste en un recipiente formado, internamente, por un mensaje
cifrado con una llave de sesión S y, externamente, por la llave de sesión S cifrada mediante un cifrado doble (veáse la figura 2.5).
 

Figura 2.5 Generación de un sobre digital


Suponga dos usuarios A y B, el sistema funciona como sigue:

    1.El usuario A genera aleatoriamente una llave simétrica de sesión S. Y la utiliza para cifrar su texto P: C = e(P, S)
    2.A continuación, A cifra S para notificársela a B: S = e(e(S, DB), EA)
    3.A construye el sobre y se lo envía a B; el símbolo "+" indica concatenación: sobre = S + C

Cuando B recibe el sobre, trabaja como sigue:

    1.Obtiene las partes del sobre, éstas son la llave cifrada S y el criptograma C. A continuación, descifra la llave de sesión: S = d(d(S, DB), EB)
    2.Finalmente, obtiene el texto P: P = d(C, S)
 


3 Integridad

La [RAE, 21] define el concepto de integridad (integrity) como la "cualidad de íntegro o la pureza de las vírgenes". Con "íntegro" quiero decir que no
carece de ninguna de sus partes. Y con "puro" que no ha sido modificado. La búsqueda de la integridad es evidente, puesto que un intruso
intencionadamente puede interceptar y modificar un mensaje, o bien, las alteraciones del medio de transmisión pueden originar la modificación de
algunos bits. Por otra parte, la sobrecarga de la red de comunicación puede originar una pérdida de paquetes, produciéndose así la recepción de sólo
parte del mensaje, algo que debe detectar el receptor. Para la consecución de esta integridad en los datos transmitidos, se usan las huellas digitales.
Si además deseamos dotar de cierto grado de autenticación del emisor, puede usar los MACs (una especialización de las huellas que usa una llave
para su generación). En este capítulo, le voy a ilustrar las huellas. Dejo los MACs para el capítulo de identidad y autenticación.

3.1 La huella digital

Las huellas hacen uso de las funciones de huella (hash functions) que son funciones unidireccionales a las que se les pasa una cadena y devuelven
otra que depende de ésta. A la cadena de entrada, se la conoce como preimagen (pre-image) y a la de salida como huella (hash) o resumen del
mensaje (message digest). (Véase la figura 3.1 para una descripción gráfica). Las funciones de huella pueden usarse como CRCs (sumas de
comprobación).

 
Figura 3.1 Generación de una huella


Matemáticamente hablando, la huella se representa mediante una H y la función generadora como una h. Luego,

H = h(P)

puede leerse como "genera la huella H para la preimagen P". Esta preimagen puede ser, por ejemplo, un archivo.

Veamos ahora cómo debe utilizarse la huella, omitiendo el cifrado para facilitar la comprensión. El remitente del mensaje debe generar la huella para
su mensaje y, a continuación, enviar tanto el mensaje como la huella (véase la figura 3.2a para una representación gráfica):

M = P + h(P)

 
Figura 3.2 Escenario de utilización de una huella


Por su parte, el receptor al recibir el mensaje, debe descomponerlo en dos partes: el texto P y la huella H. Para comprobar si el mensaje ha llegado
íntegro, el receptor debe regenerar la huella del texto P recibido que, en caso de coincidir con la recibida, se considerará que el mensaje ha llegado
íntegramente. (Véase la figura 3.2b). Matemáticamente hablando, puede denotarse este proceso como:

P = M.dameLaPreimagen()
H = M.dameLaHuella()
si h(P) == H: el mensaje ha llegado íntegro
sino: el mensaje ha sido modificado intencionada o deliberadamente

3.1.1 Características de las huellas

Las huellas presentan las siguientes características:

       La huella siempre es del mismo tamaño. A pesar de que las preimágenes que reciben las funciones pueden ser de cualquier tamaño (y de
       hecho, generalmente, lo serán), las huellas que devuelven siempre son del mismo tamaño. Por ejemplo, el generador de huellas MD5 las
       devuelve de 128 bits.
       La huella depende de la preimagen. La variación de un solo bit de la preimagen debe de devolver una huella distinta. Por esta razón, las
       huellas se utilizan para la integridad de los mensajes; pues si el mensaje se ve modificado intencionada o deliberadamente durante su
       transferencia, el receptor lo comprobará cuando en la regeneración de la huella para la texto P recibido, ésta no coincida con la recibida en el
       mensaje.
       La huella es irreversible, es decir, dados un generador de huella h(), la preimagen P y su huella H, es imposible encontrar una función inversa
       h-1() que devuelva la preimagen P a partir de H. Matemáticamente hablando, es imposible que se cumpla la condición P = h-1(H).
       Es muy difícil encontrar la misma huella H para dos preimágenes distintas. Es muy difícil, pero no imposible, que se cumpla que h(P1) =
       h(P2), siendo las preimágenes P1 y P2 distintas. Cuando dos o más preimagenes tienen la misma huella, se dice que se ha producido una
       colisión de huellas (collision).

       Es evidente que se pueden producir colisiones. Por ejemplo, el MD5 devuelve huellas de 128 bits, lo que permite que hayan hasta 2128 (esto
       es, 3.4·1038) preimagenes distintas. Lo importante es que si se modifica el mensaje levemente, éste lleve a una huella distinta. Suponga que
       una empresa envía un mensaje a su banco para que transfiera de una de sus cuentas 1 000 euros. Si un intruso intercepta el mensaje y
       modifica la cantidad, por ejemplo, a 10 000 euros, la nueva huella del mensaje debe ser distinta. Poco importa si el intruso modifica el mensaje
       a una carta de amor, y éste tiene la misma huella, pues el banco no entenderá ese mensaje y, por tanto, la empresa no verá afectada su cuenta
       bancaria.

       Se dice que una función de huella está rota, si es fácil obtener dos preimagenes con la misma huella.

3.1.2 Algunas funciones generadoras de huellas

Las generadoras de huellas más conocidas son el MD5 y el SHA. Otras menos conocidas son el RIPEMD y el N-Hash.

El SHA (Secure Hash Algorithm, Algoritmo Seguro de Huellas) fue inventado por la NSA (National Security Agency, Agencia Nacional de Seguridad)
de los EE.UU. y está siendo utilizado por el DSS (Digital Signature Standard, Estándar para la Firma Digital). Devuelve una huella de 160 bits. No se
conoce ningún ataque sobre él.

El MD5 (Message Digest 5, Resumen del Mensaje 5) fue inventado por el profesor Riverst en 1992 y es el segundo que más adeptos tiene, siguiendo
muy de cerca al SHA. Es menos seguro que el SHA debido a que su tamaño de huella es de 128 bits con respecto a los 160 del SHA; pero es má
rápido (casi el doble).


4 Autenticación o acreditación

La identificación (identification) es el proceso mediante el que una entidad se presenta (o se da a conocer) a otra. La autenticación (authentication)
o acreditación (accreditation) es el proceso mediante el cual una entidad demuestra, fehacientemente, que es quien dice ser. La diferencia es
bastante obvia y lógica. Para ilustrarla, usaré un escenario sencillo de uso de una tarjeta en un cajero automático. El sistema necesita conocer con qué
cliente tiene que trabajar. Para ello, se usa la tarjeta que introducimos en el cajero. Una vez el sistema conoce nuestra identidad, necesita que se la
acreditemos, para evitar su uso fraudulento. Por esta razón, nos pide nuestra contraseña o PIN, generalmente de cuatro dígitos decimales. Observe
que puede aparecer alguien con la tarjeta, pero si no conoce la contraseña, no podrá usarla.

Para estos procesos de identificación y acreditación, puede recurrir:

       Al conocimiento de un secreto como una contraseña, una password o un PIN (Personal Identification Number, Número de Identificación
       Personal) que el usuario debe memorizar. Para estos casos, generalmente, se suministran un nombre de usuario (para la identificación) y una
       clave de acceso (para la acreditación) que el usuario debe proporcionar cuando se le requiera.
       A la posesión de algo como, por ejemplo, una tarjeta inteligente. En estos casos, el usuario dispone de una tarjeta que almacena, por él, su
       identificación y su clave de acceso correspondientes. Mediante el paso de la tarjeta por el lector, el usuario se identifica y acredita
       automáticamente. Es posible hacer una variación, la que vemos generalmente con el uso de nuestras tarjetas de crédito o de débito, en las que
       la tarjeta sólo contiene la identificación, lo que nos obliga, a nosotros los usuarios, a memorizar la clave de acceso, el PIN o la contraseña.
       A algo inherente como la firma digital, que se verá más adelante en otro capítulo.

En la lista anterior, no he incluido los métodos biométricos como, por ejemplo, el escaneo del iris o de la huella dactilar y la geometría de la mano. Esto
no quiere decir que usted deba mantenerlos de lado, pues para este año 2002, las estimaciones dicen que moverá cerca de los 50.5 millones de dólares,
los cuales se quedarán cortos para los 108.1 millones estimados para 2004.

Antes de pasar a ver los distintos medios de autenticación, debo indicarle que la identificación/autenticación puede ser de dos tipos: unilateral o
mutua. La identificación/autenticación unilateral (unilateral identification/authentication) consiste en que un extremo debe
identificarse/autenticarse ante otro, pero este otro no tiene porqué hacerlo también. Por su parte, la identificación/autenticación mutua (mutual
identification/authentication) requiere la identificación/autenticación de ambos entre sí.

4.1 Los MACs

Los MACs añaden a las huellas la propiedad de acreditación del remitente. Un MAC (Message Authentication Code, Código de Autenticación de
Mensaje) es una huella, pero que se calcula a partir de una llave simétrica, que sólo los extremos conocen (véase la figura 4.1). Matemáticamente
hablando, se tiene la siguiente denotación:

MAC = maa(P, K)

que puede leerse como "genera el MAC para el texto P a partir de la llave K". maa es el acrónimo anglosajón de Message Authentication Algorithm
(Algoritmo para la Autenticación del Mensaje).

Figura 4.1 Generación de un MAC

Ahora, la huella (aquí conocida como MAC) no depende sólo de la preimagen, sino que también depende de la llave utilizada. Por lo tanto, debe de
cumplirse que maa(P, K1) != maa(P, K2) si las llaves K1 y K2 son distintas, es decir, dadas dos llaves distintas y una preimagen, los MACs generados
con estas llaves no deben de ser idénticos. Como el MAC se genera a partir de una llave, el destinatario del mensaje puede utilizarla para autenticar (o
acreditar) al remitente.

Veamos cómo deben actuar los extremos de una conversación, omitiendo el cifrado para facilitar la comprensión. Suponga que ambos extremos ya
conocen la llave K a autilizar: el remitente generará un MAC (véase la figura 4.2a) y después enviará el mensaje M:

M = P + maa(P, K)
 

Figura 4.2 Escenario de utilización de un MAC


El receptor, tras la recepción del mensaje M, extraerá el texto P y su MAC. La fase de comprobación del MAC es idéntica a la que vimos con las
huellas que, como recordará, consiste en regenerar el MAC para el texto P recibido. Este MAC obtenido y el recibido deben ser iguales; en otro caso,
el texto no es el enviado por el emisor. (Véase la figura 4.2b). Veamos el algoritmo:

P = M.damePreimagen()
MAC = M.dameMAC()
si MAC == maa(P, K): el mensaje ha llegado correctamente y lo ha enviado quien esperamos
sino: el mensaje no lo envía el remitente o ha sido modificado

4.1.1 Algunos MAAs

Al algoritmo encargado de producir un MAC, se le conoce como MAA (Message Authentication Algorithm, Algoritmo para la Autenticación del
Mensaje), entre los que se encuentran: RIPE-MAC (el más seguro), CBC-MAC, Bidirectional MAC (poco seguro), Jueneman's Method e
IBC-Hash.

Si no puede conseguir un MAA, puede simularlo a partir de una función de huella. Veamos cómo. Suponga la seudollave K, la función de huella h() y la
preimagen P. El remitente debe concatener la llave a la preimagen y generar la huella para esta concatenación (véase la figura 4.3 para una
representación gráfica):

MAC = h(P+K)

Como sólo los participantes conocen la llave, sólo ellos pueden generar y verificar el MAC para la concatenación de la preimagen y la llave dadas.

Figura 4.3 Creación de un MAC mediante el uso de una función de huella

4.2 Las claves de acceso o contraseñas

La idea consiste en proporcionar a cada usuario una identidad y una clave de acceso (o password) que debe recordar y suministrar al otro extremo
cuando sea requerido. La identidad o nombre de usuario es obvia, pues se necesita saber, de entre todos los usuarios del sistema, cuál de todos es.
Mientras que la clave de acceso se utilizará para corroborar la identidad.

Tanto la identidad como la clave de acceso pueden almacenarse en disco, software, hardware o tarjeta. En esto casos, el usuario no necesita
recordarlos. Aunque la manera más usada es la obligación del usuario a memorizarlos. En estos casos, las claves de acceso suelen ser cadenas de 6 a
10 caracteres, que pueden contener caracteres alfanuméricos y algunos símbolos de puntuación como la coma o los dos puntos, entre otros. No se
recomienda tamaños mayores, debido a que muchos estudios han demostrado que a las personas nos resulta muy dificil recordar cadenas superiores a
los 8 ó 10 caracteres.

El lector puede preguntarse cuándo debe utilizar el sistema de almacenamiento en un dispositivo o en la memoria del usuario. Es evidente que todo
depende del sistema. Por ejemplo, si está diseñando un sistema de comercio-e en el cual un usuario debe recordar muchas identidades y claves de
acceso, es evidente que pedirle que recuerde cada una de ellas es pedirle demasiado. Veamos esto mediante un ejemplo. Suponga que somos un
distribuidor mayorista de computadoras y decidimos que nuestros clientes nos puedan hacer sus pedidos a través de la Internet. Para conseguirlo de
manera segura, les suministramos a cada uno de ellos una identidad (o nombre de usuario) y una clave de acceso. Es evidente que un cliente puede
tener varios proveedores y, por tanto, no se le puede pedir, para que comercie con nosotros, que recuerde su identidad y su clave de acceso. Suponga
que es usted el que debe llevar a cabo los pedidos. Si tiene que recordar sus identidades y claves de acceso para 10 proveedores, es muy probable que
acabe apuntándolas en papel. Algo que no es muy recomendable. Para solucionar el problema, decidimos que los clientes pueden guardar sus datos en
disco. Para ello, diseñamos una tarjeta virtual en software, que mantendrá en una base de datos cifrada las distintas identidades y claves de acceso
del usuario. De tal manera que cuando se ponga en contacto con un proveedor concreto, la tarjeta le suministrará la identidad y clave de acceso que
utiliza con ese proveedor. Se ha conseguido, de esta manera, facilitarle la tarea al usuario, y conseguir que éste continúe comerciando con nosotros.
En cambio, si el usuario va a disponer de pocas identidades, es mejor pedirle que las recuerde.

Por otra parte, ¿cómo debe guardar el sistema, que requiere la identificación y autenticación, la identidad y la clave de acceso?  La manera más fácil es
hacerlo en una BD (o archivo); pero es obvio que no debe guardarse, al menos, la clave de acceso como texto en claro, pues cualquiera que acceda a la
BD podrá leerla. Generalmente, la BD se suele mantener cifrada o, al menos, la clave de acceso. Por ejemplo, Linux utiliza un sistema muy sencillo.
Por una parte, mantiene como texto en claro los datos del usuario (como su identidad, nombre completo, qué shell utilizará cuando entre en el sistema,
etc.). Pero de la clave de acceso, guarda su huella. De tal manera que cuando el usuario suministra su password, el sistema operativo genera su huella
y, si coincide con la que tiene en su BD (es decir, en el archivo /etc/passwd), le deja entrar; en otro caso, no. En ningún momento, el administrador del
sistema sabe cuál es la clave de acceso del usuario, aunque sí su huella (recordemos que la huella presenta una propiedad que dice que es muy dificil
obtener la preimagen a partir de ella).

4.3 Los PINs

Un PIN (Personal Identification Number, Número de Identificación Personal) es una clave de acceso, pero que sólo contiene números, a diferencia de
las passwords que suelen contener letras, números y símbolos de puntuación. Además, suelen ser más pequeños; generalmente, de 4 a 8 dígitos. Por lo
demás, son exactamente igual que las passwords, así que no haremos más hincapié en ellos.

4.4 Vector (o tabla) de claves de acceso

El principal problema de los PINs y de las passwords radica en que si un intruso pincha una transmisión y consigue extraer la clave de acceso del
usuario, desde ese momento puede suplantarlo. Una solución consiste en la utilización de un sistema mediante el cual, para cada transmisión, el
usuario tiene una clave de acceso distinta. Esto puede conseguirse mediante una tabla de passwords. Para cada transmisión, se utiliza uno de ellos.
Por ejemplo, si tiene la siguiente tabla:

1649
2027
0980
6578

el usuario utilizará en cada conexión una clave de acceso. De tal manera que si el intruso consigue hacerse con una clave de acceso, el usuario sigue
estando a salvo, pues sabe que en la siguiente conexión el sistema espera de él otra clave de acceso. Existe un problema cuando se llega al final de la
tabla: se puede volver al comienzo, o bien, los extremos deben ponerse de acuerdo para regenerar la tabla.

4.5 Autenticación por desafío-respuesta

Como hemos visto, el principal problema que presenta la clave de acceso es que si un intruso la captura, éste puede hacerse pasar por el usuario.
Como en todas las transmisiones se usa la misma clave de acceso, el intruso tiene mayores posibilidades de capturarla, ya que si no la consigue en
una transmisión puede conseguirla en otra. Por otra parte, tenemos el ataque de retransmisión (delay attack) que consiste en que el intruso captura
un mensaje (que no sabe qué dice, aunque sí sabe que contiene la clave) y, después, lo retransmite al sistema. Hemos visto que las tablas de claves
de acceso solucionan este inconveniente, pero cuando acaba la tabla aparece el problema. Se puede utilizar una autenticación por
desafío-respuesta (challenge-response authentication) que consiste en que el sistema propone un desafío y el usuario se autentica pasando este
desafío.

Existen muchos tipos de desafios, pero nosotros vamos a estudiar el más utilizado. (Hay que destacar que el usuario sigue disponiendo de una
identidad y una clave de acceso). El desafío que nos propone el sistema consiste en suministrarnos un número que él ha generado aleatoriamente (y
que, por tanto, será distinto para cada conexión), el cual debemos concatenar o sumar a nuestra clave de acceso y generar la huella de esta clave final.
Si enviamos sólo la huella, conseguimos que nunca circule por el canal nuestra clave de acceso y no se pueda utilizar un ataque de retransmisión. El
sistema al recibir la huella, la verifica y nos acredita sólo si la comprueba.

Veamos un ejemplo. Suponga que es usted el que debe autenticarse y que su clave de acceso es 1234. Si el sistema le suministra el número aleatorio
5678, entonces debe generar la huella, por ejemplo, para la concatenación de su PIN y del número aleatorio recibido, es decir, debe generar la huella
para 12345678. A continuación, debe enviar esta huella al sistema. Como el sistema conoce su PIN y el número aleatorio, no le resulta muy difícil
comprobar si la huella recibida coincide con la esperada.

4.6 Claves de acceso automodificables

El objetivo de este tipo de autenticación consiste en que la propia clave de acceso se modifique tras cada acreditación, de tal manera que los ataques
por retransmisión o las capturas de nuestra clave de acceso no nos ocasionen problemas. La idea es muy sencilla. Tras cada identificación, el sistema
suministra un valor (en forma de cadena o número) que modificará nuestra clave de acceso.

Considere que su clave de acceso es 1234 y el valor recibido es 4321; su nueva clave podría ser, por ejemplo, 5555 (esto es, la suma de su clave y el
valor recibido: 1234 + 4321).

El sistema se parece bastante al de desafío-respuesta; pero ahora, el desafío se usa para modificar la propia clave de acceso. Si se continúa enviando
la huella, en vez de la clave, el sistema es posiblemente más seguro que el de desafío-respuesta. Una posible variación más podría consistir en que el
sistema suministre dos números aleatorios: uno de los cuales se utiliza como mecanismo de desafío y el otro, si se pasa la
identificación/autenticación, modificará la clave de acceso.

4.7 Autenticación mediante clave automodificable y tabla de claves

Para finalizar los distintos modos de autenticación, voy a ilustrarle uno que mezcla el uso de las claves automodificables, la autenticación por
desafío-respuesta y la tabla de claves. La idea es la siguiente. Se dispone de una tabla de claves y una clave automodificable. El sistema desafia de
varias formas. Por una parte, pide un elemento concreto de la tabla. Por otra parte, proporciona un número aleatorio, el cual debe añadirse a la clave de
la tabla especificada. Finalmente, el sistema envía un valor aleatorio que modifica la clave automodificable del usuario. En este caso, la clave
automodificable es una llave convencional que generará un MAC.

Ejemplo. Suponga una tabla de claves de cuatro elementos: 1111, 2222, 3333 y 4444; una clave de acceso automodificable, que recordemos es una
llave para generar la huella que se enviará al sistema, cuyo valor es KKKK. El sistema envía tres valores:

       El que indica cuál de las claves de acceso de la tabla desea recibir (para nuestro ejemplo, supondremos el elemento 2 de la tabla, esto es,
       2222).
       El aleatorio que debe concatenarse a la clave especificada de la tabla (en nuestro caso, supondremos AAAA).
       Y el número que actualiza la llave automodificable (suponga, NNNN).

Por lo tanto, debemos extraer la segunda clave de la tabla (esto es, 2222) a la que le debemos concatenar el aleatorio recibido, (es decir, AAAA). A
continuación, debemos generar el MAC para esta concatenación (2222AAAA) mediante el uso de la clave automodificable KKKK:

MAC = maa(2222AAAA, KKKK)

Finalmente, le enviamos este MAC al sistema. Si tenemos en cuenta que el sistema receptor conoce, en todo momento, cuál es nuestra llave para la
generación del MAC y cuál es la tabla y el elemento que nos ha pedido de ella, no tiene muchos problemas para verificar el MAC recibido. Si se lleva a
cabo la autenticación, la llave automodificable debe actualizarse, por ejemplo, sumándole el tercer valor recibido. Por lo que nuestra nueva clave será
KKKK + NNNN. Teniendo en cuenta que se trata de una llave convencional y que no tiene pareja, la modificación se puede llevar a cabo. Tras la
autenticación, el sistema registra la nueva llave MAC y el usuario hace lo mismo. En la siguiente conexión, la llave del MAC será distinta, el número
aleatorio también y, además, el sistema puede pedir un elemento distinto de la tabla. Por lo tanto, el intruso tiene muchísimo trabajo. Ya no le basta
con adivinar la llave que se usará para la generación del MAC y el elemento de la tabla, sino que debe adivinar todas las llaves MAC de todas las
conexiones, así como todos los elementos de la tabla, pues el sistema le podrá pedir cualquiera de ellos. Si además actualizamos el elemento pedido
de la tabla, por ejemplo, sumándole los tres valores recibidos, el intruso lo tiene todavía más dificil, pues para cada conexión se modifica también la
tabla de claves.