¿Es posible alojar contenido html previamente firmado para que no tenga que cargar mi clave privada en un servidor?

1

La pregunta es simple. Mi clave privada solo debería ser necesaria para renunciar a algo si cambia. Si tengo un sitio web de html estático, ¿puedo usar mi clave privada (firmada por una CA) para firmar todos estos archivos html, enviar todos los datos, excepto la clave privada al servidor, y luego hacer que nginx los entregue?

Sé que en el TLS hay un apretón de manos complejo y se agrega mucha aleatoriedad para hacer que cada sesión sea única, pero ¿dependen de la clave privada? ¿Existe un método TLS que pueda hacer lo que quiero?

Si no existe tal cosa, debería existir.

    
pregunta Guerlando OCs 24.02.2018 - 05:47
fuente

1 respuesta

1

TLS se utiliza para proteger la comunicación entre el cliente y el servidor. Los datos de la aplicación se cifran con claves que son únicas para cada conexión y que se crean durante la parte de intercambio de claves en el protocolo de enlace TLS. El intercambio de claves se construye de manera que tanto la entrada del cliente como el servidor se utilizan para crear las claves y, por lo tanto, ninguna parte tiene control total sobre las claves de cifrado.

El método de intercambio de claves recomendado es Diffie-Hellman y este es también el único que está disponible en TLS 1.3. No se utiliza ninguna clave privada del servidor durante el intercambio de claves y, por lo tanto, la clave privada del servidor no afecta la forma en que los datos se cifran. Esto también significa que no hay manera de precodificar los datos utilizando de alguna manera la clave privada. La clave privada solo se usa para la autenticación, es decir, para asegurarse de que el cliente realmente esté llevando al servidor correcto.

Y mientras que en el antiguo método de intercambio de claves RSA, la clave privada del servidor está involucrada para proteger la clave intercambiada, no influye en qué clave se crea y, por lo tanto, en este caso no es posible precodificar el contenido.

En otras palabras: el punto principal de la clave privada es proporcionar autenticación para asegurarse de que el cliente esté hablando con el servidor correcto. Esta autenticación se realiza firmando algún tipo de desafío con esta clave privada y, por lo tanto, demostrando la propiedad de esta clave. Dado que este desafío es único para cada sesión TLS, el servidor debe tener acceso a la clave privada y no puede ofrecer contenido previamente firmado.

Aún así, podría usar un certificado en teoría para firmar todo el contenido estático que tiene y luego podría transportar este contenido firmado a través de HTTP simple. Esto no protegería el contenido contra la inhalación, pero lo protegería contra la manipulación. Si bien este tipo de protección está fuera de TLS, puede encontrar algo como esto, por ejemplo, en el correo (S / MIME o PGP). Aún así, necesita un cliente que verifique dichas firmas, pero actualmente no existe tal cliente. Pero en realidad hay un borrador de Internet que va en la dirección de lo que desea: Firma de mensajes HTTP                     draft-cavage-http-signatures .

    
respondido por el Steffen Ullrich 24.02.2018 - 06:08
fuente

Lea otras preguntas en las etiquetas