Bueno, pues he estado mirando el algorítmo RSA que me pareció muy interesante, sencillo de entender y fuerte (uno de los más hoy en día)
Pues bien, tengo varias dudas con respecto a este algoritmo:
Primero, mi pregunta es posible saber
d (clave privada o exponente privado) si sabes también el contenido original (
m)?, por ejemplo, en este esquema:
p = 3 (1º numero primo, privado)
q = 11 (2º numero primo, privado)
n = pq = 33 (producto de los dos número primos, público)
φ(n) = (p - 1)(q -1) = 20 (privado)
φ(n) + 1 = 21 (privado)
m = 5 (mensaje a encriptar)
e = 3 (exponente de cifrado, público)
d = 7 (exponente de descifrado, privado)
Los valores que puse son un ejemplo, esta es la leyenda que voy a usar todo el tiempo...
La formula para encriptar es:
r = me mod nPara desencriptar
r:
m = rd mod nPues imaginaros que tenemos también
m, que es el mensaje original y a partil de el queremos obtener
d, lo que quiero saber es si está bien como hago yo...
Pues entonces despejamos
rd y después
drd=m+knd=logr(m+kn)Es así ya que segun sabreis cuando haciais las divisiones en primaria la prueva de la división era
dividendo=cociente*divisor+resto, el dividendo es
rd, el resto es
m, el divisor es
n pero no tenemos el cociente y no lo podemos calcular pork depende de
rd y no tenemos
d, entonces
k puede ser cualquier número, ya que
14 mod 5 = 2 y
7 mod 5 = 2, por eso pongo una constante
k que es como mínimo
1 y como máximo el infinito (ya que no sabemos
d), o eso pienso...
Weno me gustaría saber si esa teoría está bien, está claro que no sirve de mucho ya que no tenemos el valor de la constante...alguien sabe como se podría continuar para facilitar el encuentro de la constante
k o alguna manera de teniendo el mensaje original (
m) poder obtener
d ????????
Ahora otra cosa aparte...hay una cosa que no entiendo...segun mi idea encriptar archivos con RSA es inseguro pork es muy vulnerable a fuerza bruta (cosa de la que estoy equivocado), pero entonces no me cuadra una cosa:
El rango que puede tener
m a la hora de encriptar archivos es de 0-255 ya que son las posibilidades de un byte, pero entonces si tenemos
n y
e que son publicos y
r que es el resultado final (que tambien lo tenemos) con hacer esto:
La formula para encriptar es esta:
r = me mod ePues con darle a
m valores entre 0 y 255 y calcular
r', si
r'=r entonces
m'=m y ya tenemos
mmi idea es esta:
Function CalcularM (ByVal n, ByVal e, ByVal r)
For m = 0 to 255
t = m^e mod n
If t = r Then
CalcularM = t
Exit For
End If
Next m
Exit Function
entendisteis no?, si
m está en el rango 0-255 con crackear por fuerza bruta
m solo son 256 posibilidades para cada byte y muy facil de calcular, sin tener que factorizar
n y sería muy rápido averiguar la
m original independiente de que
p y
q séan muy grandes y sin tener que averigual
d. Pero entonces segun esto RSA sería muy pero que muy inseguro, en que me equivoco??
Weno pues estas son mis dudas, espero que alguien me ayude, saludos
