The document discusses cryptographic puzzles as a countermeasure against denial of service (DoS) and distributed denial of service (DDoS) attacks. It proposes a system called a software puzzle that generates puzzles for clients to solve in order to access server resources. When under attack, the server would generate and send puzzles to clients, and only grant access to clients that correctly solve the puzzles, thereby preventing attackers from overwhelming the server. However, existing puzzle schemes are not effective against attacks that use GPUs to rapidly solve puzzles in parallel. The document proposes improvements to puzzle generation and verification that aim to make the puzzles more difficult to solve by attackers using GPUs or multiple computers.