This document discusses mitigating distributed denial of service (DDoS) attacks through the use of software puzzles. It begins by describing how DDoS attacks work and how client puzzles can help address them by requiring clients to solve computationally expensive puzzles before being granted server access. However, existing client puzzle schemes are ineffective against attackers who can leverage graphics processing units (GPUs) to quickly solve puzzles in parallel. To address this, the document proposes a "software puzzle" approach where the puzzle algorithm is randomly generated by the server for each client request, rather than being published in advance. This aims to prevent attackers from preparing optimized puzzle-solving software or translating CPU puzzle software to GPU versions in real-time. The document outlines the