Digamos, por ejemplo, que yo era un proveedor de videojuegos digitales y que mis juegos se jugaban a través de una máquina virtual. Digamos también que el código para esta máquina virtual era de código abierto, y que esta máquina virtual fue diseñada para ejecutarse en la computadora de alguien.
Cuando lanzo esta máquina virtual, se verificará si hay actualizaciones, luego el usuario iniciará sesión y se canalizará a mi tienda en línea donde podrían comprar juegos nuevos o lanzar juegos que habían comprado. Esos binarios del juego se almacenarán en el disco duro del usuario y se incluirán en la misma máquina virtual. Los binarios de juegos, al igual que los binarios compuestos de código de bytes de Java, no son necesariamente de código abierto.
Obviamente quiero algunas condiciones para el funcionamiento de esta máquina virtual.
- Los usuarios solo deben poder iniciar juegos asociados con sus propias cuentas.
- Mi máquina virtual tiene anti-trampa incorporada. No quiero que los usuarios circuntenen esto.
Pensaría resolver este problema a través de una suma de comprobación informada; el binario de la VM debe coincidir con la última versión oficial antes de que el servicio acepte un inicio de sesión, pero el código de fuente abierta significa que un usuario inteligente podría modificar la función report_checksum
para devolver lo que coincida con la versión oficial.
¿Cómo podría un servicio en una relación de este tipo con sus clientes autenticar a aquellos que intentaron consultarlo?