Hacer la clave pública irrecuperable dada la clave privada

0

OpenSSL parece agrupar la clave privada junto con la clave pública cuando produce archivos .pem. ¿Hay alguna manera de evitar que esto suceda? ¿Es decir, evitar que OpenSSL cree una clave privada .pem con la clave pública? Según Wikipedia, la clave pública de RSA no se deriva directamente de la clave privada.

El escenario de uso específico es: estoy creando un pequeño servicio donde todos pueden enviar un túnel a un servidor para bloquearlos. Para facilitar esto (y hacerlo automático) distribuyo una clave privada SSH con mi programa que utiliza para luego iniciar sesión en uno de los servidores. No necesitamos autenticar a nuestros usuarios (cualquiera puede usar la clave privada para iniciar sesión y el usuario no tiene más permisos que abrir un túnel), pero debemos prevenirlos contra los MITM. known_hosts no es bueno ya que nuestros servidores están en IP dinámicas que se distribuyen con algo que no es DNS. Entonces, lo que queremos mantener en secreto es nuestro archivo "authorized_keys", que contiene la clave pública para iniciar sesión. Pero cualquier atacante puede usar PuTTYgen para generar la clave pública desde la clave privada y configurar un servidor MITM para que el usuario pueda autenticarse correctamente ...

    
pregunta ithisa 12.02.2013 - 18:21
fuente

3 respuestas

7

Para los algoritmos criptográficos de uso común, la clave pública se puede volver a calcular desde la clave privada. Un caso de borde puede ser una clave RSA con un gran exponente público (es decir, no el tradicional 65537) y sin conocimiento de los factores de módulo. Esto contradice el formato de almacenamiento estándar descrito en PKCS # 1 ; no saber los factores significa que las operaciones de clave privada no se optimizarán con el CRT , por lo que las firmas y el descifrado se realizarán cuatro veces tanto CPU; y, por último, pero no menos importante, los exponentes públicos que no caben en 32 bits no serán compatibles con algunas implementaciones de RSA generalizadas (la CryptoAPI en Windows, a saber).

Por lo tanto, no parece práctico intentar "ocultar" la clave pública del titular de la clave privada.

En su caso, no puede evitar un ataque MitM desde el lado del servidor, e incluso si pudiera "ocultar" la clave pública, entonces esto no le compraría nada: el atacante podría montar un servidor modificado que acepte a todos los usuarios como "válidos", independientemente de la clave pública que utilicen para autenticarse. Si desea proteger a sus usuarios contra un MitM, haga que su software verifique que se comunica con el servidor correcto, es decir, con el suyo. Esto es lo que hace SSH simple con el archivo known_hosts . Si no puede usar este servicio pero tampoco puede distribuir un cliente SSH modificado, tendrá que confiar en formación del usuario : enséñeles que cuando se conecten a su servidor y su cliente (por ejemplo, PuTTY) se quejan de Si no se conoce la clave del servidor, haga que verifiquen la "huella digital clave" que mostrará el cliente: debe coincidir con la huella digital de su clave del servidor.

    
respondido por el Tom Leek 12.02.2013 - 18:39
fuente
3

Distribuir una clave pública con el software. Haga que el cliente verifique que la clave privada del servidor se corresponda con la clave pública incorporada en el software. Realmente no está ganando nada con la clave privada incorporada en el software, ya que es trivial extraer la clave privada del software y, por lo tanto, cualquiera puede pretender ser su software. Lo mejor es simplemente asegurarse de que cualquier cliente no alterado sepa que solo debe conectarse a su servidor mediante el almacenamiento de la clave pública.

    
respondido por el AJ Henderson 12.02.2013 - 20:48
fuente
1

No luches contra el protocolo. ¿Puede evitar MitM distribuyendo su SSH_host_key público con su software? La tunelización SSH debe usar una verificación de host estricta usando su clave de host. Si su clave de host cambia, dejará de funcionar, por lo que es posible que necesite una forma de obtener la última clave de host (de forma segura).

    
respondido por el rox0r 12.02.2013 - 21:48
fuente

Lea otras preguntas en las etiquetas