Client Puzzle Protocol ( CPP ) es un algoritmo informático para su uso en comunicaciones por Internet , cuyo objetivo es hacer que el abuso de los recursos del servidor sea inviable. Es una implementación de un sistema de prueba de trabajo (PoW).
La idea del CPP es exigir a todos los clientes que se conectan a un servidor que resuelvan correctamente un acertijo matemático antes de establecer una conexión, si el servidor está bajo ataque. Después de resolver el acertijo, el cliente devolvería la solución al servidor, que la verificaría rápidamente o rechazaría y abandonaría la conexión. El acertijo se hace simple y fácil de resolver, pero requiere al menos una cantidad mínima de computación del lado del cliente. Los usuarios legítimos experimentarían solo un costo computacional insignificante, pero se disuadiría el abuso: aquellos clientes que intenten establecer simultáneamente una gran cantidad de conexiones no podrían hacerlo debido al costo computacional (retardo de tiempo). Este método es prometedor para combatir algunos tipos de spam , así como otros ataques como la denegación de servicio .