ALGORITMOS
En la literatura académica se han descrito numerosos
algoritmos de firma digital.
En la práctica, destacan tres de ellos: la
firma de comprobación aleatoria (hash), el
Digital Signature Standard (DSS) del gobierno de EE.UU. y la
signatura RSA, que utiliza el algoritmo clásico desarrollado
por Roven Rivest, Adi Shamir y Len Adlemn.
Los tres algoritmos tienen usos y requisitos distintos.
FUNCIONAMIENTO DE LA CRIPTOGRAFÍA DE CLAVE PÚBLICA
Los algoritmos de clave pública, como el cifrado RSA (las
siglas de sus desarrolladores), parecen causar múltiples
trastornos, ya que desafían los convenios establecidos sobre
el funcionamiento de los sistemas de doble clave. Todo el mundo
sabe que las cajas de seguridad de los bancos necesitan dos llaves
para abrise (aunque la que posee el banco es un tanto redundante
si la cámara acorazada es buena). Pero, en los algoritmos
de clave pública, las dos claves funcionan de forma distinta.
La secreta se utiliza para crear una firma digital, mientras que
la pública sirve para verificarla.
La manera más sencilla de entender el cifrado RSA es recordar
dos cuestiones de álgebra básica: primero, todos los
números tienen un multiplicador inverso, y segundo, (e^a)^b
= e^(ab). El multiplicador inverso de un número a es un número
b tal que ab=1. De este modo, en aritmética regular el multiplicador
inverso de 4 es 0,25.
RSA utiliza aritmética modular que sólo opera con
números enteros entre 0 y un cierto número n. A menudo,
se compara con el residuo de una división. La ecuación
ab mod n podría expresarse como mutiplicar a y b, luego dividir
el resultado por n y restituir el resto. Por sorprendente que parezca,
muchas de las reglas de la aritmética estándar siguen
siendo válidas en este dominio. Los números pueden
sumarse, restarse, multiplicarse y generalmente dividirse, y las
ecuaciones obedecen a las reglas habituales de conmutación,
asociatividad y transitividad.
Para construir un par de claves para RSA, encuentre dos números
primos p y q. Su producto es n. Las dos claves, e y d, son números
aleatorios elegidos de forma que ed mod [(p-1)(q-1)] = 1. Es decir,
d es el multiplicador inverso de e.
El algoritmo funciona porque m^de = m mod n (el motivo de que
opere también va más allá del propósito
de esta explicación). Para cifrar un mensaje, conviértalo
en un número m y calcule m^e mod n. Sólo la persona
que conoce d puede descifrarlo calculando (m^e mod n)^d mod n =
m^de mod n = m.
Puede pensar en el proceso de clave pública como si fuera
un collar de perlas . Suponga que una perla es el mensaje. La calve
pública es algún número menor que n, y la clave
privada correspondiente es n-a = b. Un mensaje se cifra contando
a perlas y se descifra contando a b perlas, lo que conduce de nuevo
al principio. Este planteamiento es tan sólo una metáfora,
y evidentemente no está exento de riesgos. Cualquiera que
conozca a y n puede determinar b. Pero esto no ocurre con RSA o
el Digital Signature Algorithm. Con estos algoritmos, es imposible
averiguar la clave privada a partir de la clave pública.
Volver a Seguridad
Miguel A. Ruz
miguelruz@delitosinformaticos.com
|