Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/12/2008, 17:40
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Seguridad, codigo abierto y substitucion de .dll

Cita:
Iniciado por Visca Ver Mensaje
La pregunta exacta seria: ¿Como una aplicacion cliente puede controlar que no le hayan substituido alguna dll determinada?
Esa pregunta... sí, es un poco distinta. Y sí, hay casos que se dan. Un caso muy clásico es el de evitar las copias piratas, por ejemplo, de videojuegos. Otro bastante claro, el de los antivirus: Tienen que evitar a toda costa que infecten al propio antivirus.

Soluciones hay varias. La que propones no es demasiado práctica pero hay una parecida que es la de firmar el código con certificados. Se genera una firma encriptada a partir del código que sólo puede validarse con el certificado apropiado. Cuando es necesario, se comprueba el código contra el certificado.

Una muy clásica (antigua) es la de utilizar lo que en MSDOS (por si te suena) se llamaban "programas residentes"; otro nombre común es watchdog. Tienes otro, un segundo programa, ejecutándose en memoria contínuamente desde el arranque y este se dedica a comprobar cada X tiempo que los ficheros no han sido modificados. Algunos antivirus actuales usan algo similar a esto, aunque en su caso lo hacen para comprobar, no los ficheros, sino que el propio proceso del antivirus cargado en memoria no ha cambiado o muerto.



En el caso de una aplicación distribuida, el asunto es mucho más complejo. Básicamente no tiene una solución exacta. En algunos casos lo que se hace es crear redes de confianza (es decir, me fío de que ese cliente es "bueno" porque este otro cliente que yo ya conozco me dice que sí que es "bueno"; esto se pede complicar mucho cuando intentas establecer cuánto te fías).