INTRODUCIÓN
El criptosistema de RSA fue inventado en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman.
Se basa en criptografía de clave pública que tiene las siguientes características:
* Cada usuario obtiene un par de claves, una pública y otra privada.
* La clave pública de cada persona será difundida de tal manera que puede ser conocida por cualquiera. Un usuario A que desee enviar un mensaje a un usuario B utilizará la clave pública de B para cifrar el mensaje que desea enviarle además de su propia clave secreta (la de A).
* La clave secreta se mantiene en secreto por el propietario de la misma. Con esta clave se podrán descifrar los mensajes que lleguen. Así con el ejemplo anterior, B utilizaría la clave pública de A y su propia clave secreta para descifrar el mensaje enviado por A.
* Con el esquema anterior, se puede observar que únicamente las claves públicas serán difundidas y podrán ser conocidas por cualquiera. Las claves privadas no son transmitidas o compartidas.
* La base de este criptosistema está en que no se puede obtener la clave privada del usuario receptor a partir de su clave pública.
CARACTERÍSTICAS DEL RSA
Funcionamiento:
Básicamente la seguridad del RSA se fundamenta en que es casi imposible factorizar cantidades que son producto de dos números primos largos. Y digo casi imposible por no decir imposible ya que con la tecnología actual la única posibilidad sería después de muchos años de cálculos.
En general este sería el funcionamiento:
Se obtienen dos números aleatorios primos A y B calculando el producto de ellos C=A*B que es a lo que se le llama módulo.
Se elige un número D que sea relativamente primo al producto de (A-1)*(B-1).
Se obtiene un número E dentro del rango (1,(A-1)*(B-1)) de la siguiente manera:
E*D=1mod((A-1)(B-1))
D será lo que se llama exponente privado mientras que E será el exponente público.
La clave pública será la pareja (C,E) y la privada será D.
Una vez se tengan las claves, A y B ya se pueden destruir para evitar que alguien las pueda "pillar" y obtenga la clave privada a partir de ellas.
ENCRIPTACIÓN Y DESENCRIPTACIÓN
Se obtienen los números A y B de forma aleatoria y se calcula C.
Se obtiene D que es relativamente primo a (A-1)*(B-1). La manera de obtener este número es cogiendo cualquier primo que se encuentre en el intervalo:
(max(p,q)+1,C-1)
Obtener E dentro del rango (1,(A-1)*(B-1)) de la siguiente manera:
E*D=1mod((A-1)*(B-1))
De alguna manera, se asocian a cada carácter alfabético un valor numérico y ciframos el mensaje en bloques de la misma longitud BLOQ_MENS cuyo valor numérico está comprendido dentro del rango (1 … C).
Usuarios que han visto este tema también han visto...
- ¿Pero sabe alguien que tu web existe?
- ¿Dónde encuentro fonts gratuitas para Mac y PC?
- OpenSocial: introducción a la API social de Google
- PHP4 y PHP5: ¿Cuál elegir? ¿Migrar o no Migrar? El advenimiento de PHP6
- Imágenes Web
- Versión imprimible de este documento
- Enviar por e-mail este documento