¿Es posible cifrar las comunicaciones sin un servidor externo?

2

Por ejemplo, ¿es posible conectarse a un servidor web que sea solo HTTP, absolutamente sin soporte para HTTPS? Sin embargo, el cliente todavía puede conectarse al sitio sin preocupaciones de ataques MITM, sin un servidor externo o sin nada único en el servidor web?

    
pregunta Rob Gates 09.06.2017 - 03:47
fuente

4 respuestas

2

Es difícil decir exactamente lo que estás preguntando; Puede enviar mensajes secretos y seguros, pero no "sitios estándar". Puede utilizar el cifrado de extremo a extremo sin https. Esto es de la misma manera que puedes usar E2E con postales o transmisiones de radio o lápiz y papel con una herramienta sencilla que hice

Si bien creo que PHP y JS pueden comunicarse entre sí (con la cooperación previa) de manera segura, no podrá servir una página normal utilizando las rutinas normales del navegador.

Sería posible crear un cliente habilitado para JS que pueda transferir datos de manera segura, como lo usé cuando construí nadachat.com. Eso usa una clave de publicación para enviar una clave simétrica de solo sesión. Además de un sistema de este tipo, podría crear autenticación y una interfaz de usuario similar a la web, pero no utilizar nada estándar como enlaces, imágenes, etc.

Va a ser mucho trabajo pesado por su parte implementar este sistema. La parte de encriptación es bastante fácil, es asegurarse de que está hablando con el servidor correcto (autenticación / verificación) sin un certificado que va a ser más difícil. Hay rutinas de desafío-respuesta que pueden manejar eso, pero una vez más, realmente va en contra del grano y corre el riesgo de implementar una implementación defectuosa.

No hagas rodar tu propia criptografía.

    
respondido por el dandavis 09.06.2017 - 10:43
fuente
1

En ausencia de software en ambos extremos de la conexión, no. HTTPS es el protocolo diseñado para abordar esa brecha en HTTP.

Si por alguna razón necesita comunicarse de forma segura pero HTTP es su única opción, (quizás la razón por la que pregunta es si hay un firewall bloqueando todo el tráfico no HTTP) considere software de tunelización HTTP . Un túnel HTTP requiere un servidor proxy externo, así como un componente de software del lado del cliente. Estos túneles de protocolo de bajo nivel funcionan mediante la emulación de dispositivos de red al sistema operativo; luego encapsulan los paquetes IP dentro del protocolo HTTP de nivel superior que se intercambia con el proxy. A continuación, ejecuta el software VPN común a través del túnel resultante y su proxy le reenvía los paquetes, lo que le permite comunicarse de manera segura a través de su proveedor de VPN habitual a través de un túnel HTTP.

    
respondido por el John Deters 09.06.2017 - 05:54
fuente
1

Para protegerse de los ataques MITM, el flujo de datos debe estar cifrado. Se puede cifrar en 3 niveles:

  • el nivel TCP. Eso significa que en lugar de usar un socket en bruto, usas un socket encriptado. SSL / TLS en la forma estándar actual para eso, y en el caso de HTTP, se llama HTTPS. Podrías imaginar un mecanismo de cifrado alternativo para eso, pero cuando llegamos a seguridad, el diablo se esconde en detalle, así que mi consejo es: no lo hagas a menos que seas un experto en seguridad y encriptación.
  • el nivel de aplicación (más alto). Eso significa que usas un canal no cifrado, pero solo intercambias mensajes cifrados. Por ejemplo, eso es exactamente lo que sucede cuando intercambias mensajes cifrados S / MIME a través del correo. Pero no conozco soporte directo para HTTP
  • el nivel de IP (inferior). Siempre que ambos extremos (y cualquier enrutador en el camino) lo admitan, puede utilizar un canal encriptado IPsec . Como el cifrado se encuentra en un nivel inferior al de TCP, puede usar HTTP con seguridad sobre él.

Una VPN (o cualquier túnel cifrado, como ssh) directamente al servidor es, de hecho, una variante de lo anterior: usted configura un canal cifrado desde el cliente al servidor y luego puede pasar de forma segura HTTP simple sobre él.

    
respondido por el Serge Ballesta 09.06.2017 - 15:05
fuente
0

No sé si esto es lo que buscas pero aquí va. Descargos de responsabilidad:

Se sabría aún el hecho de que su IP se conectó al sitio web y se visitaron ciertas páginas. Sin embargo, el contenido de cualquier dato publicado no lo haría.

Supongamos que desea publicar datos confidenciales en un sitio web público.

Podrías usar una extensión del navegador, llamaremos a mi extenstion falso EncryptMe.

Dile que vas a una página del foro. Y ingrese Instale la extensión Encrypt Me @ whatever.com. Ahora, la aplicación EncryptMe genera una clave aleatoria o se activa desde un servidor EncryptMe posible en la computación en la nube como Amazon, Google, Microsoft.

Ahora tiene un bloque de datos que parece un ruido aleatorio. Es binario por lo que no puedes publicarlo. Problema resuelto uuencode.

Para la gente normal que lee tu publicación, se lee.

Please install the EncryptMe extension
IXI:2>E!1XI:2XI:25N*6DE?BEI+BEI(FXI:2XI:23'GBEI)6XI:2WXH'
'

Luego comparta la clave de cifrado por correo electrónico, impresión, etc. con personas autorizadas. La extensión EncryptMe también podría proporcionar un mecanismo para compartir la clave de cifrado.

Por lo tanto, en este ejemplo, tanto el navegador web de envío como el receptor necesitarán que EncryptMe esté instalado, pero el servidor web no necesita nada. EncryptMe usaría / dev / random o el equivalente de Microsoft, MAC para una clave de cifrado. Usando la misma tecnología de clave pública / privada.

  1. Clave privada / dev / random
  2. Clave pública generada en base a clave privada

Puedes publicar la clave pública donde quieras o no. Tal vez la aplicación EncryptMe tenga una base de datos pública a la que puedan referirse los usuarios, pero elegirías si tu clave pública estaba disponible o no.

Si tiene el control del servidor web, pero no puede activar el cifrado porque es un dispositivo incorporado en un chip ROM o algo que podría hacer lo mismo. Haría que index.htm literalmente tuviera bloques grandes de uuencodings que codificó en su PC antes de publicarlo.

El navegador web de los clientes que llega a su sitio web verá:

Please install EncryptMe browser extension <FireFox link>, <IE link>, <Safria link>

MXI:2>E!1XI:2XI:25N*6DE?BEI+BEI(FXI:2XI:23'GBEI)6XI:2WXKBEI)X
MXI:20DT-"EKBEI+BEI+BEI+OO[WBEI+BEI(G6W;BEI)T2B;BEI(GXI:2.>*6
MDN*6DN*6DN*6DN*6DD_BEI)NPYCBEI)5XI:20N*6DN*6DN*6DCOBEI+BEI+B
MEI)4XI:25N*6DC%(XI:2XI:2,G3BEI+BEI+BEI(OXI:24'545%GBEI+BEI+B
MEI+BEI+BEI)1XI:226QJXI:2;V3BEI+BEI(_XI:2XI:2XI:2XI:2XI:2;>*6
MDEY'1#CBEI)3*>*6DN*6DN*6DG3BEI+BEI(DXI:2*^*6DG-H9^*6DE[BEI)8
M4RSBEI+BEI),1#+BEI+BEI)]XI:23N*6DFCBEI)6XI:2XI:2XI:2;.*6DE7B
MEI(^XI:24N*6DN*6DCOBEI+BEI+BEI+BEI(^2.*6DN*6DBCBEI+BEI)DXI:2
MXI:2XI:2XI:2XI:2XI:2.$'BEI+:C6?BEI)>XI:2:"=<XI:2XI:2?.*6DBS+
M@TXU9N*6DD_BEI([2UOBEI+BEI+BEI+BEI)W+^*6DG%+XI:2#0KBEI)+XI:2
M*U!U5%194'545%EF3N*6DN*6DN*6DN*6DN*6DN*6DG/$DN*6DN*6DN*6DN*6
MDDLMXI:2*>*6DN*6DN*6DF/BEI+BEI)XXI:2>%7BEI+BEI+BEI+BEI)\/B+B
MEI+<C^*6DN*6DB[BEI)VXI:2+WSBEI+BEI)59FU-1U;BEI(YXI:2WH+BEI+B
MEI)+XI:2*W0IXI:2*.*6DN*6DN*6DG;BEI+BEI(UXI:2XI:24>*6DN*6DCI=
M->*6DN*6DN*6DFAKXI:2XI:2XI:21N*6DD(MXI:2XI:2=D=ZXI:2(7(@XI:2
M0N*6DN*6DGMC(>*6DN*6DEGBEI+BEI(-"B'@("'@("'@("'@("'@("'@("'@
    
respondido por el cybernard 09.06.2017 - 16:54
fuente

Lea otras preguntas en las etiquetas