Anda di halaman 1dari 8

Instituto Politcnico Nacional

Fundamentos de Criptografia
Exponenciacin Rapida en la
cifra asimtrica
ekx0day

Agenda

Introduccin
Un mtodo de exponenciacin rpida
Ejemplo de exponenciacin rpida
Algoritmo de exponenciacin rpida
Algoritmo en C

Introduccin
Campo de aplicacin de la exponenciacin
Los criptosistemas modernos requieren elevar
numeros a exponentes muy grandes (miles de
bits),para eso se utiliza la exponenciacin dentro de
(aritmtica modular).
Realizar exponenciaciones mediante multiplicacin
de la base por si misma tantas veces como indique el
exponente es inviable para nmeros grandes. Por lo
que se requiere de algoritmos de exponenciacin
eficientes.
3

Introduccion
La exponenciacion modular rpida es un
algoritmo que proporciona una manera de
calcular de forma rpida grandes potencias y
se basa en la conversin binaria del
exponente y en la operacin AB mod n en
donde n es un primo grande o un producto de
primos grandes.
Esta operacin AB mod n se realizar para el
intercambio de clave y en la firma digital
tambin en los criptosistemas de RSA y
ELGAMMAL.
4

Un Mtodo de exponenciacin rpida


En AB mod n se representa el exponente B en binario.
j

Se calculan los productos A2 con j = 0 hasta n-1, siendo n


el nmero de bits que representan el valor B en binario.
Slo se toman en cuenta los productos en los que en la
posicin j del valor B en binario aparece un 1.
Ejemplo

Calcular x = 1237 mod 221 = 207


1237 es un nmero de 40 dgitos:
8505622499821102144576131684114829934592

Ejemplo de exponenciacin rpida


Calcular x = 1237 mod 221 = 207
B = 3710 = 1001012

Bits 5 4 3 2 1 0

A = 12

122 mod 221 (primer clculo)


1442 mod 221

12 144 183 118


A mod 221
2

x = 121831 mod 221 = 207


En vez de 36 multiplicaciones y sus reducciones mdulo 221 en cada
paso ... 72 operaciones...
Se realizan cinco multiplicaciones (para j = 0 el valor es A) con sus
reducciones mdulo 221, ms dos al final y sus correspondientes
reducciones.

Algoritmo de exponenciacin rpida


Hallar x = AB mod n
Obtener representacin
binaria del exponente B
de k bits:
B2 bk-1bk-2...bi...b1b0
Hacer x = 1
Para i = k-1, ..., 0 hacer
x = x2 mod n
Si (bi = 1) entonces
x = xA mod n

Ejemplo: calcule 1983 mod 91 = 24


8310 = 10100112 = b6b5b4b3b2b1b0
x=1
i=6 b6=1 x = 1219 mod 91 = 19 x = 19
i=5 b5=0 x = 192 mod 91
= 88 x = 88
i=4 b4=1 x = 882 19 mod 91 = 80 x = 80
i=3 b3=0 x = 802 mod 91
= 30 x = 30
i=2 b2=0 x = 302 mod 91
= 81 x = 81
i=1 b1=1 x = 812 19 mod 91 = 80 x = 80
i=0 b0=1 x = 802 19 mod 91 = 24 x = 24

1983 = 1,369458509879505101557376746718e+106 . En este caso se realizaron slo


16 operaciones frente a 164. Ahora en una operacin de firma digital con hash: (128
bits) (1.024 bits) mod 1.024 bits se ahorra mucho tiempo en computo y porcesamiento.7

Algoritmo en C

//Entrada: nmeros enteros a (base), n (exponente), m (mdulo)


//Devuelve: un entero exp= an mod m
//jonathan ANGELES gARCIA
#include <stdio.h>
#include <math.h>
//Restricciones: 0 <= a < m, m >= 2, n >=0
float exp_mod_rap (float a, float n, float m);
void main ()
{
float x,a,n,m,exp;
float exp_mod_rap (int a, int n, int m)
{
exp =1;
while (n >0)
{
if (n%2==1){
exp = (exp*x)%m;
x = (x*x)%m;
n = n/2;
}
}
return (exp);
}
}

Anda mungkin juga menyukai