El RSA es un sistema criptográfico con clave pública tanto para encriptado como para autenticación que fue desarrollado por Ron Rivest, Adi Shamir y Leonard Adleman en 1977.
El sistema de claves públicas RSA
Se basa en algoritmos matemáticos, en donde el encriptado y la autenticación se producen sin compartir ninguna clave secreta: cada persona utiliza sólo las claves públicas de otros usuarios y su propia clave privada. Cualquier persona puede enviar un mensaje encriptado o verificar un documento firmado por otra utilizando sólo claves públicas, pero solamente alguien que posee la clave privada correcta puede desencriptar o firmar el mensaje.
El esquema propuesto en RSA se explica así:
Mediante un programa de cómputo cualquier persona puede obtener un par de números, matemáticamente relacionados, a los que se denominan llaves. Una llave es un número de gran tamaño, que usted puede conceptualizar como un mensaje digital, como un archivo binario, o como una cadena de bits o bytes. Las llaves, públicas y privadas, tienen características matemáticas, su generación se produce siempre en parejas, y se relacionan de tal forma que si dos llaves públicas son diferentes, entonces, las correspondientes llaves privadas son diferentes y viceversa. En otras palabras, si dos sujetos tienen llaves públicas diferentes, entonces sus llaves privadas son diferentes. La idea es que cada individuo genere un par de llaves: pública y privada. El individuo debe de mantener en secreto su llave privada, mientras que la llave pública la puede dar a conocer.
El procedimiento de firma de un documento digital, por ejemplo, implica que, mediante un programa de cómputo, un sujeto prepare un documento a firmar y su llave privada (que sólo él conoce). El programa produce como resultado un mensaje digital denominado firma digital. Juntos, el documento y la firma, constituyen el documento firmado.
Es conveniente señalar que, a diferencia de la firma autógrafa, si dos documentos son diferentes entonces la firma digital también es diferente. En otras palabras, la firma digital cambia de documento a documento, si un sujeto firma dos documentos diferentes producirá dos documentos firmados diferentes. Si dos sujetos firman un mismo documento, también se producen dos documentos firmados diferentes.
El proceso de autentificación se efectúa de la siguiente forma:
Dos puntos I y II mantienen comunicación, conociendo I la llave pública de II. Desde el punto II, se envía un documento firmado digitalmente y un criptograma asociado que sólo es posible hacerse utilizando su clave privada. Entonces I, utilizando la llave pública de II genera un criptograma reflejo, compara ambos criptogramas y, si son iguales, el documento es auténtico.
Si alguna parte del documento o parte de la firma se modifica, aunque sea ligeramente, entonces, el procedimiento de autentificación indicará que el documento no es auténtico. Si una llave pública autentifica un documento firmado, entonces el documento fue firmado con la correspondiente llave privada, es decir, si un individuo tiene asociada la llave pública que autentifica el documento, entonces, el documento fue efectivamente firmado por ese individuo.
A diferencia de la firma autógrafa, que es biométrica, y efectivamente prueba el acto personal de firma, la firma digital sólo prueba que se utilizó la llave privada del sujeto y no necesariamente el acto personal de firma. En consecuencia, no es posible establecer con total seguridad que el individuo firmó un documento, sino que sólo es posible demostrar que es el individuo es el responsable de que el documento se firmara con su llave privada. En otras palabras, si un documento firmado corresponde con la llave pública de un sujeto, entonces el sujeto, aunque no lo haya hecho, debe de reconocer el documento como auténtico.
Por lo tanto, el sujeto debe cuidar de mantener su llave privada en total secreto y no revelársela a nadie, porque de hacerlo es responsable de su mal uso.
Un sujeto, en el proceso de autentificar un documento firmado debe conocer la llave pública del supuesto firmante. El sujeto que autentifique documentos firmados por 10 individuos deberá contar con 10 archivos o con una base de datos, que contenga las 10 llaves públicas de los posibles firmantes. Si este número lo aumentamos a cien, mil o a un millón, el problema crece considerablemente.
Una solución para el problema del manejo de las llaves es el conocido certificado digital.
Un certificado digital es un documento firmado digitalmente por una persona o entidad denominada autoridad certificadora (AC). Dicho documento establece un vínculo entre un sujeto y su llave pública, es decir, el certificado digital es un documento firmado por una autoridad certificadora, que contiene el nombre del sujeto y su llave pública. La idea es que quienquiera que conozca la llave pública de la AC puede autentificar un certificado digital de la misma forma que se autentifica cualquier otro documento firmado.
Si el certificado es auténtico y confiamos en la AC, entonces, puede confiarse en que el sujeto identificado en el certificado digital posee la llave pública que se señala en dicho certificado. Así pues, si un sujeto firma un documento y anexa su certificado digital, cualquiera que conozca la llave pública de la AC podrá autentificar el documento.