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.
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)
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).
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.