¿Importa qué clave se considera privada y cuál pública?

13

Matemáticamente, ¿hay alguna diferencia entre qué conjunto de caracteres es private_key y cuál es public_key?

@Edit Al momento de preguntar, estaba pensando en RSA, no en criptografía asimétrica en general.

    
pregunta so_user 05.12.2014 - 03:16
fuente

2 respuestas

13

No debería importar ...
En RSA puede usar d (privado) o e (público) para cifrar y también descifrar. Esto no funciona con todos los sistemas criptográficos. Por ejemplo, DSA no permitirá esto.

Técnicamente, realmente no importaría si intercambias los valores de e y d.

... pero lo hace
Rendimiento:
Pero en realidad, usualmente quieres que la verificación (usando e) sea rápida. Y luego acepte que la firma (usando d) es más lenta.

Por lo general, el exponente público se elige como una representación binaria simple y pequeña. El número 65537 (0b10000000000000001) se elige regularmente como el exponente público. Y un número mucho, mucho más grande (aproximadamente del mismo tamaño que el módulo, aproximadamente 2048 bits hoy en día) como la clave privada.

Vea también: enlace

Seguridad:
Y: Realmente no puedes cambiar esto (gran exponente público, pequeño exponente privado), porque hay ataques publicados sobre pequeños exponentes privados. ( Wiki: ataque de Wiener )

Vea también: enlace

    
respondido por el StackzOfZtuff 05.12.2014 - 08:10
fuente
5

En general, sí. Con muchos criptosistemas asimétricos, una de las claves se puede derivar de la otra, por lo que no hay elección en cuanto a cuál mantener la privacidad.

Muchos algoritmos criptográficos asimétricos se basan en la dificultad de calcular logaritmos discretos . La clave privada es un entero k y la clave pública es el valor gk para algún parámetro público g en un espacio donde el cálculo logarítmico discreto no es factible con números grandes, pero la exponenciación es razonablemente rápida. Este es el caso, por ejemplo, con los números modulo un número grande p : calculando gk mod p desde g y k es sencillo, pero al resolver la ecuación g k mod p = y para k no es factible cuando se selecciona apropiadamente p (un primo con propiedades adicionales dependiendo de en el algoritmo). Luego, para tamaños de clave aceptables, es fácil calcular la clave pública a partir de la clave privada, pero no se conoce ningún método para calcular la clave privada a partir de la clave pública en tiempo de escala humana. Dos algoritmos populares basados en la dificultad del logaritmo discreto son DSA y Diffie-Hellman (incluidas sus variantes de curva elíptica - DSA y DH se basan en la dificultad de calcular logaritmos en ℤ / pℤ, ECDSA y ECDH en curvas elípticas sobre finito campos).

Hay una familia popular de sistemas criptográficos donde la clave privada y la clave pública viven en el mismo espacio matemático y las operaciones los tratan de forma idéntica: RSA . En el núcleo de RSA está la operación M Mk mod n , donde k es la clave privada d para el descifrado y la firma y la clave pública e para el cifrado y la verificación de la firma ( n es un parámetro público, y la seguridad de RSA requiere seleccionar diferentes n para cada par de claves). Calcular d dado solo e y n es inviable si los valores se eligen correctamente. Es posible generar un par de claves RSA donde los dos exponentes son intercambiables. Sin embargo, esto rara vez se hace porque hay una ventaja de rendimiento al elegir un valor pequeño para k . Por lo tanto, en la práctica, RSA utiliza un valor pequeño para la clave pública e y el valor correspondiente para la clave privada d . El valor pequeño tiene que ser la clave pública, porque si la clave privada era pequeña, podría encontrarse fácilmente mediante fuerza bruta ( d no se puede calcular a partir de e , pero es fácil validar si una suposición de d coincide con los valores conocidos de e y n , por lo que la seguridad depende de tener un espacio de búsqueda increíblemente grande para d ).

    
respondido por el Gilles 05.12.2014 - 14:40
fuente

Lea otras preguntas en las etiquetas