My idea:

You input E-Mail/Pass/CD Key on a website, in return you get UID. The website registers and calculates the hash based on the CD Key (no spoofing possible here). Upon entering the Halo server the UID is checked with the hash on the server.