If you can trust the client by having them enter in a password, can't you then set up a system that uses the same idea as public-key cryptography ( http://en.wikipedia.org/wiki/Public-key_cryptography )? Once the user has logged in and authenticated with their password they generate their public and private keys and send the server the public key while keeping the private key local. This method would be processor int…
Here's the attack: The user writes software which performs the same authentication handshake as the official client, but after the handshake it starts sending evil messages to the server.
Or am I really missing something and should just stop commenting? :)