La mejor manera de enviar contraseñas de manera segura desde una aplicación a un servidor operado por un usuario

0

Tengo la siguiente situación:

  • Un usuario configura un servidor que tendrá que recibir los detalles de inicio de sesión.
  • Otros usuarios luego crean cuentas e inician sesión en este servidor.

Todo esto sucede solo en LAN. Estoy pensando en usar HTTPS; sin embargo, como los usuarios tendrán que configurar sus propios servidores, no tendrán certificados firmados.

¿Cómo me aseguro de que la aplicación esté hablando con el servidor real sin requerir certificados (pagados)?

¿O hay una mejor manera de transferir estas contraseñas de forma segura?

    
pregunta Boelensman1 25.08.2015 - 16:57
fuente

3 respuestas

2

Puede utilizar el protocolo de seguridad de Internet ( IPSec ). De esta manera, las comunicaciones de LAN se autentican y cifran para cada paquete IP de una sesión de comunicación. No es un problema si sus máquinas ejecutan Windows o Linux sistemas operativos basados en. Tenga en cuenta que también puede usarlo junto con Layer 2 Tunneling Protocol ( L2TP ) que interactúa perfectamente con IPSec.

    
respondido por el user45139 25.08.2015 - 17:15
fuente
2

Intentaré abordar esto a nivel de red / protocolo y dejaré el método que usted envíe (correo electrónico de IE) a usted. Si ha pensado en el medio de transferencia, podemos abordarlo también.

Basándome en su publicación, supongo que son solo para uso interno y no se requiere acceso externo. Si este no es el caso, compre una tercera parte cert.

Solo interno, su intento de mantener los costos bajos al no comprar un certificado de terceros (solo un FYI, esta es probablemente una de las formas más rentables de administrar un certificado, proporcionar seguridad y proporcionar Non-repudiation )

Con los certificados autofirmados, debe abordar los tres. Comenzando con lo más fácil:

Seguridad (cifrado IE):

El certificado en sí mismo proporcionará el nivel de cifrado que desea. El estándar de seguridad mínimo actual en este momento creo que es RSA de 2048 bits, certificados firmados por SHA2.

Gestionar los certificados:

Ahora que tiene el certificado autofirmado, ¿cómo lo manejará? La práctica estándar es de 1 a 3 años con certificaciones válidas; puede hacer que su certificado dure más tiempo, pero está mal visto. Es más fácil administrar un certificado, pero incluso en 3 servidores comienza a convertirse en un problema. Aquí no hay viñeta de plata, puede rastrearlo manualmente, puede comprar software, puede agregar un servidor de CA, pero todo requiere esfuerzo.

Por último, no repudio:

Esta es la parte más importante y, lamentablemente, con los certificados autofirmados, también es la más difícil. Los certificados de terceros lo logran a través de ser una CA de confianza, utilizada por todos. Tener un certificado de Verisign o de quien sea significa que ha ocurrido un nivel de pre-verificación para su compañía. Esto también evita los conocidos ataques MITM. Los certificados autofirmados no proporcionan esto.

Puede cargar la CA firmante (normalmente el servidor en certificados autofirmados) en cada computadora que usará el sitio, incluido el certificado utilizado para cifrar. Técnicamente, esto puede prevenir los ataques MITM, pero es obvio lo complejo que esto se volverá.

Podría tener un servidor de CA (y usarlo para administrar certificados) y solo necesitaría que los clientes tuvieran el certificado de firmantes de confianza del servidor de CA, pero eso aún tiene complejidad.

Si no lo haces, serás susceptible a los ataques MITM.

@begueradj también proporcionó otra solución. L2TP y IPSec . L2TP no es seguro de manera predeterminada, por lo que se usa IPSec (comúnmente se ve en VPN), pero esto también brinda los mismos problemas. IPSec requiere la distribución de claves. ¿Cómo manejarás las llaves? ¿Cómo se enviarán las llaves de forma segura? ¿Cómo vas a proporcionar no repudio?

TL: DR Hay soluciones y después de revisarlas todas, lo más probable es que llegue a la conclusión de que lo que realmente desea son los $ 500 para un certificado de terceros (infierno, incluso si es un comodín). Esto solo cambia realmente cuando su organización es lo suficientemente grande donde el impacto en los costos cambia y los equipos tienen el conocimiento y la experiencia para administrar CA Server, etc.

    
respondido por el Shane Andrie 26.08.2015 - 17:54
fuente
0

Yo usaría HTTPS con certificados firmados por una CA que usted crea, si no quiere el costo / la molestia de usar una CA de confianza.

Luego simplemente verifica tus claves contra tu propia CA. Por ejemplo, consulte esta guía para saber cómo crear su propia CA. y firme sus propios certificados con esta CA, aunque para su propósito, no es necesario que instale su certificado raíz en las estaciones de trabajo / navegadores (lo que haría que toda la computadora confíe plenamente en cualquier cosa firmada por sus certificados).

La mayoría de las bibliotecas HTTPS le permitirán especificar la ubicación del certificado de su CA para que su aplicación pueda verificar. Por ejemplo, en Python con las solicitudes, usted define variable ambiental REQUESTS_CA_BUNDLE o en java agrega la El certificado de CA para su almacén de confianza .

    
respondido por el dr jimbob 26.08.2015 - 19:17
fuente

Lea otras preguntas en las etiquetas