Red de conocimiento informático - Conocimiento informático - Explícame cómo funciona el algoritmo RSA

Explícame cómo funciona el algoritmo RSA

Primero, encuentre tres números p, q, r,

donde p y q son dos números primos diferentes, y r es primo relativo con (p-1)(q-1)

p, q, r son claves privadas

A continuación, encuentre m tal que rm == 1 mod (p-1)(q-1)

Esta m debe existir, porque r y (p-1)(q-1) son primos relativos. Esta m debe existir porque r es primo relativo con (p-1)(q-1) y se puede obtener por división conmutativa

Luego, calcula n = pq

m, n , estos dos números son la clave pública

El proceso de codificación es, si los datos son a, trátelos como un número entero grande y suponga que a <p> Si a > = n, entonces a representa el posicionamiento de s, luego a representa el posicionamiento de s y n representa el posicionamiento de s.

Luego, alimente s a (s <= n, generalmente s = 2^t),

de manera que cada bit sea menor que n, y codifíquelo segmentariamente

A continuación, calcule b == a^m mod n, (0 <= b < n),

b son los datos codificados

Al decodificar, calcule c == b^r mod pq (0 <= 0 <= b

De esta forma se completa la decodificación. Más adelante demostraremos que c y a son realmente iguales :)

Si un tercero está escuchando, obtendrá varios números: m, n(=pq), b

Si quiere decodificarlo, tiene que encontrar una manera de obtener r.

La forma más efectiva de evitar que factorice es encontrar dos números primos muy grandes p y q,

Esto hará que a un tercero le resulte difícil factorizar

<Teorema>

Si p y q son números primos diferentes, rm == 1 mod (p-1)(q-1),

a es cualquier número positivo Enteros, b == a^m mod pq, c == a^m mod pq, b == a^m mod pq. m mod pq, c == b^r mod pq,

Entonces c == a mod pq

La demostración usando el pequeño teorema de Fermat es la siguiente:

m es cualquier número primo y n es cualquier número entero, entonces n^m == n mod m

(En otras palabras, si n y m son mutuamente primos, entonces n^(m-1) = = 1 mod m)

(Si n y m son mutuamente primos, entonces n^(m-1) == 1 mod m.

)

Esto es lo mismo que n^(m-1).mod m)

Usando algunos conocimientos básicos de teoría de grupos, podemos probar fácilmente el pequeño teorema de Fermat

Porque rm == 1 mod (p-1)(q-1), entonces rm = k(p-1)(q-1) + 1, donde k es un entero

porque es una multiplicación que se conserva en módulo

(x == y mod z and u == v mod z => xu == yv mod z),

Entonces, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq

1. Si a no es múltiplo de p o q, entonces rm = k(p-1)(q-1)+1) mod pq

1. no es un múltiplo de p o q,

entonces a^(p-1) == 1 mod p (Pequeño Teorema de Fermat) => a^(k(p-1 )(q-1)) == 1 mod p

a^(q-1) == 1 mod q (Pequeño teorema de Fermat) => mod q

Entonces p, q puede ser divisible por a^(k(p-1)(q-1)) - 1 => pq a^(k (p-1)(q- 1)) - 1

es decir, a^(k(p-1)(q-1)) == 1 mod pq

=> c == a^(k( p-1)(q-1)+1) == a mod pq

2 Si a es múltiplo de p pero no múltiplo de q,

Entonces a^. (q-1) == 1 mod q (Pequeño Teorema de Fermat)

=> a^(k(p-1)(q-1)) == 1 mod q

=>c == a^(k(p-1)(q-1)+1) == a mod q

=> > Porque p | a

=> c == a^(k(p-1)(q-1)+1) == 0 mod p

=> p | c - a

Entonces pq | c - a => c == a mod pq

3. Si a es múltiplo de q en lugar de A múltiplo de p, la prueba es. como arriba

Si a es un múltiplo de q pero no un múltiplo de p, la prueba es la misma que la anterior

4. ,

Entonces pq | a

=> c == a^(k(p-1)(q-1)+1) == 0 mod pq

=> pq | c - a

=> c == a mod pq

Q.E ..D.

El teorema establece que cuando a se codifica como by se decodifica en c, a == c mod n (n = pq)

Pero cuando codificamos y decodificamos, restringimos 0 <= a < n, 0 <= c < ,

Entonces esto significa que a es igual a c, por lo que el proceso codifica y decodifica

Esto significa que a es igual a c, por lo que el proceso codifica y decodifica

p>