¿Autentificando cliente sin clave de codificación?

5

Una pregunta básica, pero no soy un maestro y esto me está desconcertando-

¿Cómo es posible autenticar a un cliente desde la perspectiva del servidor?

es decir, ¿Imagina que usted es el servidor y desea darle una clave al cliente, pero solo si está seguro de que el cliente es realmente el software que usted escribió y no alguien que pretende ser su software para poder agarrar la clave? / p>

La única solución que puedo pensar es en varias combinaciones de codificación física de una clave privada en el cliente, o codificación física de un algoritmo predecible (es decir, el servidor dice "n" y el cliente debe responder "n * 2") ... pero ¿De esto es crackable a través de descompilar ...?

En caso de que sea importante, el software cliente debe ser O / S agnóstico, es decir, ejecutarse en Windows, Mac, Linux, Android, iOS, etc.

    
pregunta davidkomer 17.06.2012 - 15:51
fuente

3 respuestas

6

No es posible autenticar a un cliente de esta manera. Como señala correctamente, siempre se puede realizar ingeniería inversa y duplicarse. La autenticación del servidor solo funciona porque el usuario no tiene acceso al hardware del servidor, y para crear un cliente seguro, debe encontrar una manera de impedir que el usuario acceda al hardware del cliente, lo que generalmente es imposible.

    
respondido por el Mike Scott 17.06.2012 - 16:23
fuente
0

Déjame pensar en voz alta por un segundo. Podría usar una suma de comprobación de los archivos binarios del cliente. Si su función de hash es resistente a las colisiones, por ejemplo SHA-1, puede estar seguro de que el cliente es auténtico con una probabilidad muy alta.

Esquema básico para el protocolo:

  • Cliente Hola
  • servidor Hello
  • cliente ACK || suma de comprobación
  • Autenticación del servidor. terminado
respondido por el a0viedo 18.06.2012 - 15:44
fuente
0

No es posible distribuir un software a clientes que pueden conectarse pero que no pueden ser suplantados. Puedes hacerlo difícil al ofuscar la clave, pero nunca imposible.

Con esto en mente, elegiría:

  • Use TLS con claves por cliente (firmado por su propia CA).
  • Si un cliente se comporta mal, usted pone su clave en la lista negra y continúa. Nadie más está afectado.
  • Si se filtra una clave, simplemente puede proporcionar una nueva al cliente (probablemente ofuscada dentro de un nuevo binario).
respondido por el WhyNotHugo 28.04.2015 - 10:55
fuente

Lea otras preguntas en las etiquetas