¿Se pueden intercambiar las claves RSA?

12

En un nivel teórico, ¿hay algo intrínsecamente diferente acerca de las claves públicas frente a las privadas?

Durante la generación de claves RSA, se generan dos claves, la clave A y la clave B. La clave A es privada y la clave B es pública. ¿Podría la clave B ser privada y la clave A pública?

  • ¿Es la elección de qué clave ser privada arbitraria?
  • ¿Funcionaría cualquiera de las dos teclas igual de bien que la privada si la otra es pública?
  • ¿Hay alguna propiedad matemática que necesita que la clave A sea privada?

Sé que el formato en disco es diferente y no puedo simplemente cambiar el nombre de los archivos. Pero estoy hablando de la clave binaria sin formato, sin ningún tipo de codificación, formato o metadatos.

    
pregunta bahamat 01.03.2014 - 02:01
fuente

3 respuestas

15

En RSA hay tres componentes importantes:

  • Un exponente público
  • Un exponente privado
  • Un módulo común (utilizado con las claves privada y pública)

Entonces, entonces, la clave pública consiste en el exponente público y el módulo, mientras que la clave privada consiste en el exponente privado y el módulo.

Pero de la forma en que normalmente se implementan las cosas, el exponente público es casi siempre 0x10001 , el mismo valor para cada . Así que solo el módulo es único.

Puede ver, entonces, cómo sería problemático cambiar la clave pública y privada aquí. Si el secreto de todos fuera 0x10001 , eso no sería muy secreto. Así que, en lugar de eso, mantenemos en secreto el exponente menos predecible, y llamamos a esa una clave privada.

    
respondido por el tylerl 01.03.2014 - 03:15
fuente
6

Matemáticamente, un par de claves RSA es un número n que es el producto de dos primos probables grandes p y q , y un par de números ( d , e ) de manera que d × e - 1 es un múltiplo de ( p - 1) × ( q - 1). Los números d y e se conocen como exponentes (por una razón que veremos en un minuto). Hay algunas restricciones más, pero tratan a d y e simétricamente. La clave pública es el par de números ( n , e ) y la clave privada es el par de números ( n , d ).

(Los archivos de clave privada a menudo contienen más que solo n y d , pero eso es una cuestión de formato concreto, y una cuestión de archivos de clave privada que generalmente contienen la clave pública también.)

A este respecto, sí, las claves RSA podrían intercambiarse.

Sin embargo, el punto de un par de claves pública / privada es que una de las claves permanece secreta mientras que la otra se hace pública. El número n debe usarse en ambos lados, por lo que es público. Uno de d y e , convencionalmente, el escrito d , se mantiene en secreto y e se hace público. Si d se debe mantener en secreto, no debe ser fácil de adivinar.

El corazón de la operación RSA es aumentar un número grande (aproximadamente tantos bits como el tamaño de la clave) a la potencia de d o e . Esta es una operación costosa (lenta), por lo que es bueno elegir d y e para que no sea demasiado lenta. Esto implica hacer que d y e sean pequeños (o, como segundo, que tengan pocos bits establecidos en 1 en su representación binaria). Sin embargo, si hace que d sea pequeño, puede hacerlo por enumeración. Entonces d , el exponente privado, tiene que ser grande. Por otro lado, e se puede mantener pequeño; por razones matemáticas, tiene que ser impar y no puede ser 1, pero 3 es una opción perfectamente buena y la segunda más común. Por razones históricas, la opción más común de e es 65537, que es 10000000000000001 en binario.

Así, en un par de claves RSA, como se hace en la práctica por buenas razones, dada la clave privada ( n , d ), se puede encontrar la clave pública (< em> n , e ) adivinando los posibles valores de e (¿es 65537? Si no, ¿es 3? Si no es así, intente algunos más pequeños números.) Por esta razón, la clave pública y la clave privada no se pueden intercambiar.

Tenga en cuenta que esto es una propiedad de RSA. Algunos otros algoritmos de clave pública (como DSA) tienen claves públicas y privadas que viven en diferentes espacios matemáticos.

    
respondido por el Gilles 01.03.2014 - 10:28
fuente
4

La siguiente descripción se aplica a la criptografía de clave pública RSA. La clave pública es el par (e, n) y la clave privada es (d, n) , donde n es un producto de 2 grandes números primos. e y d son inversos multiplicativos.

Dejemos que x ^ y denote x elevado a y power mod n. Todas las operaciones se realizan mod n

Tome el mensaje m, donde m < norte. Como e y d son inversos multiplicativos,

 (m ^ e) ^ d is equal to m
 (m ^ d) ^ e is also equal to m

Por lo tanto, no hay nada especial acerca de e o d en lo que respecta a las matemáticas . e, que es parte de la clave pública, es un número pequeño, generalmente 3 o 65537, y d, que es parte de la clave privada, es el inverso multiplicativo de e y será un número aleatorio enorme. Desea que la clave privada sea un número aleatorio enorme que no se puede adivinar y la única forma de obtener d es factor n, que es computacionalmente inviable para n grande.

Cifras un mensaje al computar (m ^ e). Llámalo c. Descifras por computación (c ^ d) que te dará m. Como e es mucho más pequeño que d, cifrar un mensaje usando RSA es mucho más rápido que descifrarlo.

De hecho, ve hacia el otro lado cuando firma: normalmente se firma el hash del mensaje. h = hash (m) Calcule s = (h ^ d) para obtener la firma del hash. Usted verifica la firma al computar s ^ e para volver h.

    
respondido por el Babu Srinivasan 01.03.2014 - 08:39
fuente

Lea otras preguntas en las etiquetas