security - DSA: ¿Qué puede hacer un pirata informático con*solo*una clave pública?
registration signing (8)
El punto es que este tipo de cifrado está diseñado para proteger el contenido del mensaje y verificar la autenticidad del remitente, que en este caso es claramente conocido por el usuario, es decir, el nombre y el proveedor, etc. Mucho mejor sería proteger una sección del código con este tipo de encriptación de modo que los bits cruciales de código permanezcan confusos hasta que se use la clave adecuada.
Sin embargo, una vez que se utiliza la clave, el usuario puede descifrar y hacer copias del software. El software totalmente protegido es completamente inutilizable. Aunque sin relación, this es una lectura interesante sobre la protección de las cosas.
El sistema de registro de shareware que estoy desarrollando actualmente integra la clave DSA pública en el propio archivo ejecutable, y la clave privada reside en un servidor. (En aras de la discusión, supongamos que el servidor es 100% seguro y que no hay forma de que nadie pueda acceder a la clave privada).
Cada vez que se compra el programa, el servidor genera una licencia para el usuario al firmar el nombre del usuario con la clave privada. Esa licencia se envía por correo electrónico al usuario. Una vez que el usuario ingresa manualmente su nombre y licencia en la aplicación shareware, la clave pública incluida en la aplicación verifica que sea una licencia válida o no válida.
Sin embargo, sería bastante trivial para una persona determinada con el "know-how" correcto desarmar el ejecutable y recuperar la clave pública.
Mi pregunta aquí es, ¿qué podrían hacer con eso? ¿Es una clave pública, por sí misma, completamente inocua? ¿Es la clave pública suficiente información para aplicar ingeniería inversa a un generador de claves?
Mentes curiosas quieren saber. ¡Gracias por adelantado!
El solo hecho de tener la clave pública no es suficiente información para hacer algo útil.
Lo único que se podría hacer es que alguien pueda cifrar un mensaje utilizando la clave pública que solo se podría descifrar con la clave privada. Pero si la clave privada está solo en el servidor, esto no hará nada.
Cualquier otro ataque requeriría tratar de calcular la clave privada, que no se acelerará en absoluto al tener la clave pública.
En la criptografía asimétrica, es seguro dar su clave pública a un atacante. Sin embargo, este valor, junto con una firma o texto cifrado producido por una clave privada se puede usar en Trivial Attack para obtener la clave privada correspondiente.
La clave pública no debería tener nada útil. Sin embargo, si el cheque se encuentra fácilmente, es posible que simplemente pueda eludirlo y parchearlo en una prueba que siempre tenga éxito sin molestarse en verificar la licencia con la clave pública.
Las claves públicas se utilizan en todas partes: formularios de inicio de sesión, seguridad de las transacciones bancarias, autenticación del lado del cliente, etc. Por lo tanto, la respuesta corta es que no debe preocuparse, porque muchas otras personas más inteligentes han analizado este problema y han aceptado la distribución de Claves públicas a puntos finales.
¿Qué puede decir la gente de tu clave pública? Ellos obviamente sabrían un nombre clave y la longitud de la clave. Supongo que la clave forma parte de un certificado, que también podría contener algunos detalles sobre la URL de su empresa y de su sitio web.
Mis preguntas para ustedes son:
1) ¿Por qué te preocupa una clave pública en un ejecutable? Cualquier cracker medio decente cambiaría su ejecutable para omitir por completo la verificación de la clave pública. El hecho de que el cifrado sea sólido no tiene sentido cuando le está dando un binario al cliente que se puede modificar.
2) ¿Eres consciente del desorden en el que te puedes estar metiendo? No hay nada intrínsecamente incorrecto en el uso de cifrado de clave pública para asegurar un binario, pero puede terminar con problemas a medida que se desarrolla el sistema. Las cosas como las claves caducadas, las renovaciones de claves y la emisión de claves (creo que esta es una herramienta que está desarrollando para vender) pueden convertirse en un gran problema. Y, sin embargo, seguirás atascado con la realidad de que tu mayor desafío es evitar que los crackers simplemente redirijan el binario para evitar tu control de seguridad por completo.
No estoy de acuerdo en que la clave pública no sea útil. Generé mi propio par de claves públicas y privadas y supongamos que encuentro los bits de la clave pública en el ejecutable. Cambio la clave pública a mi clave pública. Ahora puedo firmar cualquier cosa con mi clave privada, el programa la aceptará.
Suponiendo que se esté utilizando un método de cifrado aún no interrumpido, la clave pública no se puede utilizar para determinar la clave privada. Está destinado a ser verdaderamente público ; Conocido por cualquiera.
Una clave pública por sí sola les permitiría descifrar cualquier información cifrada enviada por el servidor. Eso es. Pasar de una clave pública a una clave privada es excepcionalmente difícil; Así es como funciona la criptografía de clave pública. (Por "excepcionalmente" me refiero a que está diseñado para resistir los esfuerzos bien financiados por el gobierno; si evita que la NSA lo agriete, será lo suficientemente bueno como para detener a Joe Blow).
Tenga en cuenta que no ayuda con DRM, que suena un poco como si estuviera tratando de hacerlo. DRM es simplemente roto por el diseño; Si el atacante tiene la información y la clave para desbloquearla en los dispositivos locales para él, ya ha terminado el juego. Si le das una clave a un atacante, podría ser público, ya que no estará dispuesto a mantenerlo en secreto ...