Sobre el algoritmo RSA Adler Rensso Chung Gonzalez
*
Trujillo, Enero del 2017
Resumen El algoritmo RSA es presentado. presentado. El concepto concepto y los fundamentos fundamentos matem´ aticos aticos del algoritmo son discutidos. Se implementa el algoritmo en el lenguaje de programaci´ on on C++.
Palabras Claves: Algoritmo, RSA.
1.
Intr In trod oduc ucci ci´ ´ on on
En 1977, un a˜ no no despu´ d espu´es es de d e la introducc intro ducc´´on on de la l a criptogr c riptograf af´´ıa de clave c lave p´ublica ublica por p or Diffie algoritmo RSA [3]. El y Hellman [2], se desarroll´o un algoritmo conocido como el algoritmo nombre se debe a las letras iniciales de los apellidos de los investigadores: Ron Rivest, Adi Shamir y Leonard Adleman. En el algoritmo RSA se generan un par de claves, donde una de ellas es revelada al mundo exterior(clave p´ublica) ublica) y la otra se mantiene en secreto para el usuario(clave privada). Para generar las claves el algoritmo RSA utiliza un concepto de la teor´ teor´ıa de n´umeros umeros que es llamada funci´ on on de una v´ıa (one-way function ). ). Esta funci´on on es f´acil acil de evaluar, pero su funci´on on inversa es muy d´ıficil. Esta propiedad es aprovechada para generar una clave privada conociendo la clave p´ublica ublica del usuario y, de ese modo, el mensaje permanece en secreto. *
Universi Unive rsidad dad Nacio Nacional nal de Trujill rujillo o - Escuel Escuela a de Postg Postgrad radoo- Secci´ Secci´ on on de Cienc Ciencias ias F´ısicas ısicas y Matem´aticas. aticas.
1
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
2. 2.1.
Prel Prelim imin inar ares es La idea
Se asume que dos personas, digamos Alicia y Bob, quieren intercambiar mensajes secretos entre ellos usando criptograf´ criptograf´ıa de clave asim´etrica, etrica, especialmente el algoritmo RSA. Ellos primero generan sus claves y publican su clave p´ublica ublica de manera que la otra parte pueda tener acceso a esta. Las notaciones para la clave p´ublica y clave privada de Alicia son P U A y P RA, respectivamente. Analogamente, para P U B y P RB . Cada uno de los participantes mantiene su clave privada en secreto. cuando Alicia quiere enviar un mensaje a Bob, ella encripta el mensaje usando P U B , a la cual ella puede acceder. Para cualquier mensaje, M , ), C , de M , Alicia genera un texto cifrado( ciphertext ), la siguiente manera: C = P U B (M ). Despu´ Desp u´es es de recibir reci bir C , C , Bob puede desencriptar el mensaje empleando su clave privada, P RB . Esto se puede expresar formalmente como: M = P RB (C ). Alguien, que no sea Bob ni Alicia, que intersecta C C no ser´a capaz de reproducir M incluso teniendo acceso a P a P U B pues: 1. En criptograf´ criptograf´ıa de clave clave asim´etrica etrica es imposible generar una clave cuando no se tiene acceso a la otra clave. 2. Un mensaje que es encriptado mediante una clave no es posible desencriptar utilizando una clave similar. 3. La clave p´ublica ublica y privada para cualquier participante est´an an emparejados y son inversas una de la otra, es decir, M = P RB (P U B (M )) M )) M = P U B (P RB (M )) M )) Consecuentemente, un mensaje que es encriptado usando la clave p´ublica ublica puede s´olo olo ser desencriptado con su pertinente clave privada.
2.2. 2.2.
Un poco de teor teor´ ´ıa de n´ umeros umeros
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
cantidad de enteros positivos menores o iguales a n y que adem´as as son primos relativos con n. Por ejemplo, ϕ(5) = 4 y ϕ(6) = 2. Para un n´umero umero primo p se cumple Si p y y q son primos relativos, entonces ϕ entonces ϕ(( pq ) = ϕ( ) +1. ϕ( p) p) = p − 1. Si p q son ϕ ( p) p)ϕ(q ) = n − ( p+ p + q )+1. Por ejemplo, ϕ ejemplo, ϕ(30) (30) = ϕ = ϕ(5) (5)ϕ ϕ(6) = 30 − (5 + 6) + 1.
Teorema de Euler-Fermat. Si a y n son primos relativos, entonces o´d n) aϕ(n) = 1( mod .
3.
El alg algoritm ritmo o RSA
El algoritmo RSA comprende tres pasos: 1. Generaci´on on de clave 2. Encriptaci´on on 3. Decriptaci´on on
3.1. 3.1.
Gene Genera raci ci´ ´ on on de clave
El algoritmo RSA genera un par de claves. Estas claves son usualmente generados empleando n´ umeros primos grandes. El algoritmo para la generaci´on umeros on de claves es el siguiente: aleator´ıa, dos primos grandes p y q tal que p = q . Paso 1 Elegir, de manera aleator´ q tal que p Paso 2 Calcular n Calcular n tal que n que n = = p p × q.
Calcular ϕ((n) = ϕ( 1). Paso 3 Calcular ϕ ϕ ( p) p) × ϕ(q ) = ( p − 1) × ( p − 1). 1 < e < ϕ( Paso 4 Seleccionar un entero e tal que 1 < ϕ (n) y mcd( mcd(e, ϕ(n)) = 1, donde e y ϕ(n) son primos relativos. Calcular d como el inverso multiplicativo de e( m´od od (ϕ(n)), )), es decir, de = Paso 5 Calcular d de = 1 m´ od od ( )
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
3.2. 3.2.
Encr Encrip ipta taci ci´ ´ on on
Alguien que desee mandar un mensaje puede utilizar la clave p´ublica ublica (e, (e, n). En el ejemplo previo, cuando Alicia desea enviar un mensaje a Bob, ella puede ahora encriptar el mensaje M de M de la siguiente manera: od n) C = M e ( m´od Alicia manda el texto cifrado, C, a Bob.
3.3. 3.3.
Decr Decrip ipta taci ci´ ´ on on
Despu´ Desp u´es es de recibir reci bir C de C de Alicia, Bob ahora puede desincriptar el mensaje utilizando la ´ puede obtener M clave privada relativa. El on: M usando la siguiente expresi´on: od n) M = C d ( m´od Desde que nadie m´as as tiene la clave privada de Bob, nadie m´as as que Bob puede ser capaz de desincriptar el mensaje. Los seudoc´odigos odigos de procedimiento de la generaci´on on de claves son discutidos en los algoritmos 1, 2 y 3. Seguimos a [1] en la elaboraci´on on del algoritmo y la implementaci´on. on.
3.4. .4.
Ejem jemplo
En este ejemplo se ilustra como funciona el algoritmo RSA. Suponga que Alicia desea enviar un mensa je a Bob y ´el el genera su clave de la siguiente manera: 1. Bob elige dos n´umeros umeros primos, p = 17 y q y q = = 13. 2. Entonces Bob calcula n calcula n tal que n = p = p × q = = 17 × 13 = 221. 221. 3. El valor de ϕ de ϕ((n) es calculado como ϕ( ϕ (n) = 16 × 12 = 192 4. Bob elige e elige e = = 131. 131. 5. Bob encuentra el n´umero d umero d = 107 6. Ahora la clave p´ublica ublica de Bob es (131, (131, 221) y su clave privada es (107, (107 , 221). Luego de la generaci´on on de la clave, Bob publica su clave privada y Alicia tiene acceso a esta clave p´ublica. ublica. Se asume que Alicia desea encriptar el siguiente mensaje, M = 8. Alicia puede utilizar la clave p´ublica ublica de Bob para producir C producir C ,, es decir, C
131
(
od 221) = 70
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
3.5. 3.5.
Algo Algori ritm tmos os
Algorithm 1 FindE( ϕ FindE( ϕ((n)) 1: BEGIN 2: e ← 0 3: do 4: begin 5: Elegir un entero e (e debe ser coprimo de ϕ( ϕ (n)) 6: while (!CheckCoPrime (e, ( e, ϕ(n), e)) 7: end do-while 8: return e 9: END
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
( ϕ((n), e) Algorithm 2 FindD ( ϕ BEGIN 2: Variables locales: a locales: a,, b, x, y,u,v, m, n, q,r, q,r, gcd gcd a ← ϕ(n) 4: b ← e x←0 6: y ← 1 u←1 8: v ← 0 gcd ← b 10: while (a ( a! = 0) do ← gcd/a q ← 12: r ← gcd g cd % a m ← x − u ∗ q 14: n ← y − v ∗ q gcd ← a 16: a←r x←u 18: y ← v u←m 20: v ← n end while 22: if y < 1 then + y y ← ϕ(n) + y end if 24: return y END
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Algorithm 3 GenerateKey(n, e, d) BEGIN Variables locales: p locales: p,, q, ϕ(n),pt,ct 3: Ingrese dos n´ umeros primos y asigne en p y q , respectivamente. umeros respectivamente. ( p, q ) n ← Multiplicar ( p, ϕ(n) ← ( p − 1, q − 1) 6: e ← FindE (ϕ(n)) d ← FindD( FindD(ϕ(n), e) /* el par (e, (e, n) es ahora la clave p´ublica ublica y el par (d, ( d, n) es ahora la clave privada*/ 9: END
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
4.
Impl Implem emen enta taci ci´ o on ´n en C++(Referencia [1])
#include #include #include #include using using namespac namespace e std; boolCheckIsPrime(l boolCheckIsPrime(long ong intnum) { if(num if(num< < 2) retur return n false; false; longin longinti ti = 2; while(i< while(i< = num/2) num/2) { if(!(num if(!(num% % i)) return return false; false; i++; } return return true; true; } longint longint Multiply Multiply(lon (long g int num1,lon num1,long g int num2) num2) { return return num1 * num2; num2; } boolCh boolCheck eckCoP CoPrim rime e (long (long int int num1, num1, long long int int num2) num2) { longint lowest;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
} longintFindE(long longintFindE(long intphi_n) { longint e = 0; do { cout cout<< << "Ele "Elegi gir r un nume numero ro ente entero ro e (e debe debe ser ser copr coprim imo o de phi_ phi_n) n): : "; cin>> cin>> e; } while while (!CheckC (!CheckCoPri oPrime(p me(phi_n hi_n, , e)); return return e; } longintF longintFindD indD(lon (long g intphi_n intphi_n, , long int e) { int a = phi_n, b = e; longint x = 0, y = 1, u = 1, v = 0, m, n, q, r; longin longintgc tgcd d = b; while (a ! = 0) { q = gcd/a; r = gcd% a; m = x - u * q; n = y - v * q; gcd = a; a = r; x = u; y = v; u = m;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
longint longint rem; longint x = 1; while (e ! = 0) { rem = e % 2; e = e/2; if (rem = = 1) x = (x * t)% n; t = (t * t)% n; } return return x; } voidEn voidEncDe cDecSt cStr r (long (long int int e, long long int int n) { char char *str *str = new char[1 char[1000 000]; ]; char char *str1 *str1 = new char[ char[100 1000]; 0]; cout<< cout<< "\nEnt "\nEnter er a string string: : "; cin>>str; cout<< cout<< "Encript "Encriptar ar usando usando clave clave publica: publica: " <
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
long longin int t p, q, phi_ phi_n, n, pt, pt, ct; ct; do { cout<< cout<< "Ingre "Ingrese se un numero numero primo primo: : "; cin>> cin>> p; } while while (!CheckI (!CheckIsPri sPrime(p me(p)); )); do { cout<< cout<< "Ingre "Ingrese se otro otro numero numero primo: primo: "; cin>> cin>> q; } while while (!CheckI (!CheckIsPri sPrime(q me(q)); )); n = Multiply Multiply(p,q (p,q); ); cout<< "n es " << n <
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
cin>> cin>> choice; choice; switch switch (choice) (choice) { case case 1: EncDecNum(e, EncDecNum(e, n); break; case case 2: EncDecStr(e, EncDecStr(e, n); break; default: cout<< cout<< "Mala "Mala eleccion eleccion. . Intente Intente de nuevo." nuevo." <> cin>> choice; choice; switch switch (choice) (choice) { case case 1:
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Referencias Practical Cryptography Cryptography , CRC-Press, [1] S. Azad, Al-S. K. Pathan (Editors) (2015) Practical Boca Raton.
[2] W. Diffie and M. M. E. Hellman Hellman (1976) New Directions in Cryptography , IEEE Transactions on Information Theory, Vol. IT-22, no 6, 644-654. [3] R.L. Rivest, Rivest, A. Shamir, and L. Adleman Adleman (1978) A Method for Obtaining Digital signatures and Public-Key Cryptosystems , Programming Techniques, Vol. Vol. 21, 2 1, no.2, 120-126.