Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Envio Seguro De Puntuaciones

Iniciado por AgeR, 20 de Mayo de 2005, 09:48:57 AM

« anterior - próximo »

AgeR

 Hola, hace poco puse un post con un jueguecito, el BallClicks.

Bueno, resulta que algún imbécil se ha empeñado en perder su tiempo averiguando cada fórmulita que he puesto para calcular el código de seguridad para subir las puntuaciones, y cada dos por tres aparece un record suyo con tropemil puntos.

La pregunta... hay algún modo de poder enviar los records de forma algo más segura mediante paso de parámetros por url tal como hago ahora, o me tendría que poner con conexiones http desde el programa? En caso de esto último, alguien tiene alguna experiencia?

Gracias!

Lord Trancos 2

 Yo para este tipo de cosas usaria algo asi:

1 - Convierto los datos que quiero enviar en una cadena hexadecimal.
  Ej:  AB8034

2 - Añado (con alguna formula) a esa cadena otros datos fijos (siempre los mismos).
 Por ejemplo, intercalo cada 2 caracteres la letra A.
 Ej: AB8034 ---> ABA80A34A

3 - Calculo el MD5 del resultado del punto 2.

4 - Envio: la cadena hexadecimal del punto 1 + el MD5 del punto 3.
 Ej: AB8034XXXXXXXXXXXXX... ( donde XXXX.... es el MD5)

Cuando llegan los datos al servidor, lo unico que tienes que hacer es coger los datos del punto 1 y volver a calcular el MD5. Si coincide, ya sabes que es válido.

Obviamente el sistema lo puede romper cualquier hacker que se esfuerze un poco, todo dependra de hasta que punto es competente el tipo que te esta jodiendo.

EDIT: Cuanto mas complejo sea el punto 2, mas complicado será de romper.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Topper

 Hola, yo creo que con encriptar la información con un algoritmo de clave pública-privada sería suficiente.

Prueba un rijndael o alguno del estilo.

Saludos.

Mars Attacks

 Hola, yo creo que dejes disfrutar a ese capullo. Si quieres, haz dos zonas de récords, la de "récords serios" y la de "récords de gente aburrida" XD

Pogacha

 Encuentra al culpable y que lo encierren ...  :lol:

Citar2 - Añado (con alguna formula) a esa cadena otros datos fijos (siempre los mismos).
Por ejemplo, intercalo cada 2 caracteres la letra A.
Ej: AB8034 ---> ABA80A34A

mmm, si mi intencion fuera esa, me meto en el programa y cambio los puntos antes de ser encriptados.

Adapta el cheating-dead al BallClicks.

Saludos

Lord Trancos 2

Cita de: "Pogacha"mmm, si mi intencion fuera esa, me meto en el programa y cambio los puntos antes de ser encriptados.
Evidentemente... pero ante que te modifiquen la memoria del programa, poco puedes hacer.

Por eso he dicho que dependia de la pericia del individuo en cuestion.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

ethernet

 Está claro que el único algoritmo que te servirá será el que han comentado de clave pública y privada porque el atacante siempre podrá mirar qué algoritmo has usado y reproducirlo. un saludo

ZeruGiran

 Lo que proponen es encriptacion por oscuridad y eso siempre puede ser hackeado. Los mas serio seria usar llaves publicas y privadas.

Saludos.

Lord Trancos 2

 Yo lo de usar un cifrado por claves publicas/privadas no lo acabo de ver como solucion.

Creo q puede complicar demasiado el asunto, y a efectos practicos es tan hackeable como el caso que yo comento.

Si alguien se pone a depurar el programa y modifica la memoria donde se almacena la puntuacion, ya puedes usar PGP o lo que quieras que los datos por muy cifrados que se envien y por muy indescifables que sean, ya continen una puntuacion invalida.

Otra cosa es cuando quieres que quien intercepte un mensaje no lo pueda descifrar,... pero en este caso el emisor del mensaje es el ordenador del "chico malo", por mucho que no pueda descifrar el mensaje, es su ordenador el que lo cifra y por lo tanto puede forzar la situacion para que cifre una puntuacion no válida.

Vamos,... que no lo veo muy claro.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Topper

 
Citar
Si alguien se pone a depurar el programa y modifica la memoria donde se almacena la puntuacion, ya puedes usar PGP o lo que quieras que los datos por muy cifrados que se envien y por muy indescifables que sean, ya continen una puntuacion invalida.

Pero, por mucho que encripte la información a su gusto, si ese usuario "malvado"  :ph34r:  no sabe la clave pública de encriptación, va de culo...

Topper

 también es cierto que si accede a la posición de memoria donde se encuentra la puntuación, tendría vía libre para poner lo que quisiera, ya que la encriptación viene después...  <_<

La verdad es que yo tampoco lo veo nada claro  :(  

AgeR

 Creo que trancos se refiere a que si en el código tengo por ejemolo "mipuntuacion = 4567" y el bastardo de turno cambia ese valor por otro antes de la rutina de cifrado, siempre va a poder mandar la puntuación que le venga en gana. Ante eso yo tampoco veo solución.

Hombre yo lo que busco es algo que no me cueste mucho de implementar, porque tampoco quiero tardar más tiempo en hacer un sistema de puntuaciones que en hacer el propio juego  :( .

Una posible solución sería apuntarme las ip de quien hace el record, y tener una base de datos de ip baneadas por ejemplo. Aunque claro, las ip pueden ir cambiando...  :angry:  

Lord Trancos 2

 Efectivamente, a eso me referia.

Por eso te recomiendo que hagas justo lo que dices.

Un sistema no demasiado complejo y al que se pase de listo lo baneas.

EDIT: Otra cosa que puedes hacer es cuando cifres la información envias tambien datos sobre el hardware del PC desde donde se envia, como por ejemplo el serial del disco duro. Asi aunque su IP cambie lo puedes "detectar". De nuevo, es algo que se puede hackear, pero es facil de implementar y dificulta un poco las cosas.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

AgeR

 Tampoco quiero quedarme con información sobre los usuarios, como mucho la ip para poder hacer baneos con facilidad, aunque si puede ser, ni eso.

Creo que el tema estaba en que las fórmulas que había usado eran relativamente sencillas (unas pocas operaciones). Ahora uso una fórmula bastante más compleja, a ver si resiste  :rolleyes:

De hecho todo esto me ha venido bien para aprender algunas cosillas, ya que he aprovechado para revisar el código en php y tal de paso.

fiero

 Junto con la puntuación puedes hacer otro parámetro en algún otro sitio de la memoria del juego, que se vaya actualizando en relación a ella de alguna manera especial. Después junto con la puntuación manda tambien otros datos al azar, entre los que se incluya ese código. Si el tio cambia la puntuación en RAM, deberia cambiar tambien el otro código por el que corresponde a la puntuación que acaba de cambiar. Es más dificil buscar un valor en RAM cuando no sabes que valor tiene.

Otra cosa que puedes hacer es que desde una IP solo se acepte un envio cada X minutos. Tampoco responder nada desde el servidor. Si hay que esperar hasta poder hacer otro intento y encima el servidor no responde si está bien o mal, es un coñazo de debugear.

un saludo
www.videopanoramas.com Videopanoramas 3D player






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.