confianza del cliente / servidor después de autenticarse a través de HTTPS y luego pasar a texto simple

4

Descargo de responsabilidad

Si esta pregunta es ridícula, es porque el intercambio seguro de claves públicas parece imposible antes de que se entere. Entonces estoy preguntando sobre cosas que pueden ser imposibles.

Pregunta

¿Es posible interrumpir una conexión segura para texto sin formato mientras se mantiene una conexión confiable? Lo que significa que el servidor sabe que las solicitudes del jugador siguen siendo suyas y que el jugador sabe que la información del juego sigue siendo el jugador.

Fondo

Estoy escribiendo algunos pequeños juegos multijugador de JavaScript que tendrán usuarios autenticados (cuentas de usuario persistentes en todos los juegos). Dado que el servidor tiene recursos limitados en el lado informático, me gustaría desplegar una conexión no cifrada para los datos del juego. Me pregunto si eso es posible sin abrirme a los ataques de suplantación de clientes o servidores muy fáciles (cliente de JavaScript).

Preocupación principal

El comercio de usuarios en juegos parece particularmente arriesgado pero está en desarrollo. Especialmente si monetizo un juego vinculado al trading en el futuro. Puede haber suficientes incentivos para falsificar a un cliente enviando intercambios válidos pero autodestructivos o falsificando información del juego haciendo posible estafas de información errónea.

Información adicional

Dado que ya no puedo confiar en el cliente (como está escrito en JavaScript), el estado del juego es siempre del lado del servidor y los clientes solo pueden enviar solicitudes que se evalúan para su validez.

Algunos juegos pequeños ya están escritos y la autenticación se maneja actualmente en el sitio que se ejecuta a través de https y está completamente separado de los servidores del juego. Estoy en el proceso de reunirlos aunque no.

¿Solución distribuida divertida?

Aunque no tengo los recursos, el tiempo ni el conocimiento de requisitos previos para implementarlo, si el comercio se realizó a través de una serie de DAPPS (En la cadena de bloques del éter) A mi entender, todas mis preocupaciones se corregirían a expensas de Necesidad de gastar dinero real en transacciones.

    
pregunta Sarzorus 27.09.2018 - 20:40
fuente

3 respuestas

5
  

¿Es posible descartar una conexión segura para texto sin formato mientras se mantiene una conexión de confianza?

No.

  

Dado que el servidor tiene recursos limitados en el lado informático, me gustaría desplegar una conexión sin cifrar para los datos del juego.

Parece que necesitas hacer un poco de perfil y optimización, pero casi puedo garantizar que TLS no va a ser el cuello de botella.

  

Me pregunto si eso es posible sin abrirme a los ataques de suplantación de clientes o servidores muy sencillos (cliente de JavaScript).

No (técnicamente puede ser posible, pero realmente no vale la pena, y hay una buena posibilidad de que lo hagas mal de todos modos).

  

Dado que ya no puedo confiar en el cliente (como está escrito en JavaScript), el estado del juego es siempre del lado del servidor y los clientes solo pueden enviar solicitudes que se evalúan para su validez.

Tienes razón en que no puedes confiar en el cliente, pero no porque sea JavaScript. Incluso si intenta hacer que la ingeniería inversa sea más difícil, no puede hacerlo imposible.

  

Aunque no tengo los recursos, el tiempo ni el conocimiento de requisitos previos para implementarlo, si el comercio se realizó a través de una serie de DAPPS (En la cadena de bloques del éter) A mi entender, todas mis preocupaciones se corregirían a expensas de necesidad de gastar dinero real en transacciones.

Las cadenas de bloques tienen algunas propiedades útiles, pero también hay una gran cantidad de exageraciones. Blockchains no resolverá mágicamente todos tus problemas.

    
respondido por el AndrolGenhald 27.09.2018 - 21:06
fuente
2

¿Es posible interrumpir una conexión segura para texto simple mientras se mantiene una conexión confiable?

Esto es posible. Puede darle al usuario una clave de cifrado durante su conexión TLS, que luego se puede usar para realizar un cifrado y / o autenticación (simétricos) (MAC). Sin embargo, esto requerirá que construyas tu propio cripto. Y lo primero que aprendes en cualquier crypto 101 es nunca rodar tu propio crypto. Además, si agrega esta capa adicional de todos modos, es posible que también use TLS, ya que es poco probable que escriba criptografía tensa y sea más rápida que una biblioteca de criptografía ampliamente utilizada.

De hecho, estarías usando la misma técnica que TLS está usando; Después del intercambio inicial de claves públicas / privadas, el protocolo TLS genera claves para el cifrado simétrico para acelerar las comunicaciones.

Tenga en cuenta que los usuarios siempre pueden falsificar su propio tráfico, por lo que debe validar todas las entradas de los usuarios, independientemente de si están utilizando TLS. Para simular el tráfico de texto simple de otra persona, un atacante tendría que realizar un ataque Man-in-the-Middle.

    
respondido por el Graa 27.09.2018 - 21:26
fuente
1
  

¿Es posible descartar una conexión segura para texto sin formato mientras se mantiene una conexión de confianza?

No, es imposible. En texto claro, esa no es la forma en que el servidor puede evitar que se modifiquen los datos, en ninguna dirección.

  

Dado que el servidor tiene recursos limitados en el lado informático, me gustaría desplegar una conexión sin cifrar para los datos del juego.

TLS ya no requiere muchos recursos. Si eso es realmente una preocupación, puede descargar el cifrado TLS a otro servidor o servicio, como Cloudflare, por ejemplo. Pero cualquier VPS o máquina virtual puede manejar fácilmente TLS. Si su servidor no puede manejar TLS, seguramente no puede manejar ni siquiera una pequeña fracción de su lógica de juego.

  

Ya no puedo confiar en el cliente (como está escrito en JavaScript)

No puede confiar en el cliente, independientemente del idioma, la tecnología o el marco que utilice. Incluso si su cliente estaba ejecutando dentro de un ASIC , no debe confiar en los datos del cliente.

  

si el comercio se realizó a través de una serie de DAPPS

No. Los DAPPS son difíciles de desarrollar, muy difíciles de mantener y no resolverán su problema de ninguna manera. A menos que quiera perder el dinero de los jugadores, pague a alguien con experiencia y credenciales para desarrollar estas funciones para usted. No intente hacerlo todo solo o perderá tiempo, dinero y reputación. O pague a alguien para que lo haga por usted o no implique dinero real.

Los Dapps no son escalables, ya que la red Ethereum actualmente no puede procesar ni siquiera 50 transacciones por segundo. Después de implementar un dapp, a menos que lo hayas creado específicamente pensando en modificar su código, es imposible corregir cualquier error. Existen algunas técnicas para ello, como los contratos proxy, pero aumentan considerablemente la complejidad y los costos (costos de desarrollo y procesamiento). Y un dapp es un tipo de mecanismo muy específico, y debe usarse solo cuando otras tecnologías no pueden resolver el problema.

    
respondido por el ThoriumBR 27.09.2018 - 21:52
fuente

Lea otras preguntas en las etiquetas