• No se han encontrado resultados

El objetivo del servicio de integridad es eliminar todas las posibilidades de alguna modificación no autorizada de mensajes durante su tránsito del emisor al receptor. La forma antigua para ejecutar esta seguridad, consistía en sellar el sobre que contenía la carta o información. En las transacciones electrónicas modernas, el sello consiste en una secuencia de bits asociados irrevocablemente con el documento a ser protegido. Esta secuencia de bits constituirá una “huella” única e infalsificable, que acompañará al documento enviado a su destino. El receptor recalcula el valor de la huella del documento recibido, y compara el valor obtenido con el valor enviado. Cualquier diferencia indicará que la integridad del mensaje fue violada.

A menudo resulta impráctica la aplicación de técnicas de encripción a un mensaje entero. En tales casos, se utilizan funciones matemáticas especiales denominadas: funciones hash, las cuales derivan una pequeña serie de datos (huella digital) a partir de un cierto volumen de datos. Una

función hash convierte una secuencia de caracteres de cualquier longitud, en una cadena de longitud compuesta “L” (valor hash), generalmente menor que la longitud original. Para propósitos de seguridad, se tienen dos casos:

1. En el caso de los algoritmos de encripción de llave pública, el valor hash depende del contenido del mensaje y de la llave privada del emisor. Cualquier persona que conozca la función hash puede calcular la huella con la llave pública del emisor.

2. Para el caso de los algoritmos de encripción simétricos, el valor hash depende de la llave simétrica, conocida solamente por el emisor y el receptor. Solamente el receptor designado será capaz de verificar la integridad.

3.6.1 Verificación de la Integridad con una Función Hash Irreversible (One-Way Hash Function)

Una función Hash irreversible (One-Way Hash Function) es una función que puede calcularse con relativa facilidad en una dirección, pero que es sumamente difícil de calcular en la

dirección inversa. Esta función también es conocida como: “Función de Compresión” o “Función de Contracción”.

Para verificar la integridad de un mensaje con una huella calculada con una función hash, se requiere que esta función sea irreversible y con las siguientes propiedades:

1. Ausencia de colisiones: en otras palabras, la probabilidad de obtener el mismo valor hash con dos textos diferentes debe ser prácticamente nula. De esta forma, para un mensaje dado x1, la probabilidad de encontrar un mensaje diferente x2 tal que H(x1) = H(x2) es

extremadamente pequeña. Para que la probabilidad de colisión sea despreciable, el tamaño del valor hash L debe ser suficientemente grande.

2. Imposibilidad de Reversión: Dada la huella h de un mensaje x, es prácticamente imposible calcular x tal que H(x) = h.

3. Debe contar con un amplio espectro entre los valores de salida: de tal manera que las pequeñas diferencias entre dos mensajes produzcan una gran diferencia entre sus huellas. De esta forma, cualquier pequeña modificación del texto original, podría en promedio, afectar a la mitad de los bits de la huella.

Algoritmo NOMBRE Longitud huella (L) bits Tamaño del bloque (B) bits Estandarización

AR/DFP Algoritmos hash de bancos alemanes - - Estándares bancarios alemanes

DSMR Esquema de firma digital que permite la

recuperación de mensajes - - ISO/IEC 1116-2

MCCP

Administración de llaves bancarias mediante algoritmos de llave pública

usando RSA.

- - ISO/IEC 1116-2

MD4 Algoritmo de compendio de mensajes 128 512 No tiene, pero está descrito en RFC 1320

MD5 Algoritmo de compendio de mensajes 128 512 No tiene, pero está descrito en RFC 1320

NVB7.1 NVBAK

Funciones hash usadas por bancos

holandeses 128 512

-

RIPEMD Extensión de MD4, desarrollado por el

proyecto europeo RIPE 128 512 -

RIPEMD-

128 Segunda función hash dedicada 128 512 ISO/IEC 10118-3 RIPEMD-

160 Versión mejorada de RIPEMD 160 512 - SHA Algoritmo Hash Seguro (NIST 1993).

Reemplazado por SHA-1 160 512 FIPS 180

SHA1 (SHA-1)

Función hash dedicada número 3 (NIST

1993) (revisión y corrección de SHA) 160 512

ISO/IEC 10118-3 FIPS 180-1 Tabla 3.2 Algoritmos hash más utilizados en el comercio electrónico.

En la tabla 3.2, se enlistan los algoritmos hash más utilizados para asegurar la integridad en el comercio electrónico. Las funciones hash asocian una cadena corta (con longitud entre 128 y 512 bits) que los hace más manejables para propósitos de firma digital. Los algoritmos más importantes de las funciones hash son: MD5 y SHA-1.

En 1994, dos investigadores (Van Oorschot y Wierner) [13] fueron capaces de detectar colisiones en la salida de MD5, lo que originó que haya sido paulatinamente reemplazado por SHA-1.

La tabla 3.3 describe el desempeño comparativo de diversos protocolos criptográficos en una estación de trabajo típica, cuando ejecuta operaciones con funciones hash y con funciones de llaves simétricas y asimétricas (de llave pública). Para tales mediciones se utilizó como base un procesador Intel Celeron a 850 MHz, corriendo sobre el sistema operativo Windows 2000. También se utilizó la librería de clases criptográficas Crypto++ [14], que permiten la implementación en Lenguaje C++ para esos algoritmos. Las operaciones por segundo están medidas con base a la entrada de paquetes de 64 bytes.

OPERACIÓN NÚMERO DE OPERACIONES POR SEGUNDO Generación de firmas de llave Pub. (RSA 1024) 95

Verificación de firmas de llave Pub. (RSA

1024) 3,300

3DES (Triple DES) 75,000

IDEA 185,000 DES 210,000 Rijndael 495,000 RC6 530,000 RC5 645,000 SHA hash 800,000 MD5 hash 1,650,000

Tabla 3.3 Comparación de las velocidades computacionales de diversos protocolos criptográficos en una estación de trabajo típica.

3.6.2 Firma Digital y verificación de la Integridad con criptografía de llave pública

Se dice que un algoritmo de encripción de llave pública es permutable, si las operaciones de cifrado y descifrado pueden invertirse, por ejemplo:

M = PKX [SKX (M) ]

En la encripción de algoritmos de llave pública permutables, un elemento de información M, encriptado con la llave privada SKX de una entidad X, puede ser leído por cualquier usuario que

posea la correspondiente llave pública PKX. Por lo tanto, un emisor puede firmar un documento,

cifrándolo con una llave privada (reservada para la operación de firma) que produzca el sello que acompaña al mensaje.

La firma digital es un procedimiento que sirve para firmar documentos, particularmente aquellos que se encuentran digitalizados. Se encuentra representada como un conjunto de bits (ceros y unos).

Otra forma de producir una firma con criptografía de llave pública, es mediante la encripción de la huella del documento. Esto se debe a que la encripción de un documento largo impone un elevado costo de trabajo computacional e introduce excesivos retardos. La huella es producida al aplicar una función hash irreversible (one-way) para el cálculo, seguida de la llave privada del emisor para la encripción. En la terminal destino, el receptor recalcula la huella con la llave pública del emisor, y verifica que el valor hash recibido sea idéntico al valor hash calculado.

El diagrama de bloques de la figura 3.7 representa la verificación de la integridad con encripción de llave pública. En la figura, h representa la función hash, C la función de encripción y D es la función de descifrado.

Aunque un mensaje permita la verificación de su integridad, no existe garantía que la identidad del emisor sea auténtica. En el caso de la encripción de llave pública del valor hash, la autenticación requiere el uso de certificados.

Los algoritmos de llave pública de uso común para el cómputo de firmas digitales, se enlistan en la tabla 3.4.

Algoritmo Comentarios Longitud de

la huella Estándar

ElGamal

Algoritmo no determinístico, en el que a un mensaje le corresponden varias firmas. Utiliza logaritmos discretos

(1985)

Variable ---

DSA

Algoritmo de firma digital, variante de ElGamal. Forma parte del estándar de firmas digitales (DSS) propuesto por el Instituto Nacional de Tecnología y Estándares de Estados

Unidos (1994)

de 512 a 1024 bits

FIPS 186I

RSA Es el algoritmo “de facto” estándar para la encripción de

llave pública. Se le utiliza también para el cálculo de firmas.

de 512 a 1024

bits ISO/IEC 9796

Tabla 3.4 Algoritmos de Llave Pública usados para el cómputo de Firmas Digitales

Aunque un mensaje permita la verificación de su integridad, no existe garantía que la identidad del emisor sea auténtica. En el caso de la encripción de llave pública del valor hash, la autenticación requiere el uso de certificados.

A continuación se describen las ventajas y desventajas de las firmas digitales: Ventajas:

ƒ Comparada con las firmas autógrafas, la principal ventaja de las firmas digitales se encuentra en la exactitud de su procedimiento y en la casi imposibilidad de su falsificación.

ƒ Portabilidad: la firma digital puede ser aplicada universalmente, de forma simultánea y sin necesidad de testigos.

ƒ Compatibilidad: con lo dispositivos electrónicos actuales, pudiendo ser almacenados en cualquier procesador contenido en una tarjeta inteligente, PC, PDA, etc.

Desventajas:

ƒ Comparada con las firmas autógrafas, las firmas digitales no tienen válidez legal ni fiduciaria en muchos países.

ƒ Existe el peligro latente de comprometer la llave privada.

ƒ Los métodos de generación de firmas digitales están cambiando conforme al avance de las técnicas criptográficas, situación que puede originar problemas de compatibilidad. 3.6.3 Firma ciega

La firma ciega es un procedimiento especial de notaría, que consiste en la firma de mensajes con el algoritmo RSA, sin revelar su contenido [15]. Una utilización práctica de esta técnica se encuentra en los pagos digitales con estampillas de tiempo.

Considere a un deudor que desea hacer un pago firmado ciegamente por un banco. El banco tiene una llave pública e, una llave privada d y un módulo público N. El deudor escoge un número aleatorio k entre 1 y N y guarda su número secreto.

El pago p es “envuelto” al aplicarle la siguiente fórmula al mensaje que se envía al banco: (p ke) mod N

El banco lo recibe y lo firma con su llave privada, de manera que: (p ke)d mod N = pd k mod N

…y regresa el pago al deudor, el cual puede sustraer ahora la nota firmada, al dividir el número por k. Para verificar que la nota recibida del banco sea la misma que fue enviada, el deudor puede elevarlo a la potencia e, como se demuestra en la siguiente igualdad:

(p d)e mod Np mod N

La mayoría de los protocolos de pago de dinero digital y virtual toman ventaja de esta técnica para satisfacer las condiciones de anonimato.