V10Viper,
The internet isn't built like that. It's based on IPs, and you already determined the problem with identifying someone by IP... the one you see might not be the end of the line, but rather a router or firewall. Not being able to, or caring to, know the exact route to an individual machine is a *good thing*. That's the whole point of IP... there are multiple routes, and each packet picks the most efficient... if one path is cutoff (original ARPA reason being a nuke), then it finds a different path. This is what makes it better than a switched system like the POTS (plain old telephone service).
The only way to authenticate someone is to ask them something only they could know. Usually through the web, servers identiy clients via username/password, and clients identify servers via SSL public-key encryption (the server knows a private key). The reason for this difference between client and server authentication is that the server-side is expected to be automated, while the client-side is expected to be interactive.
It sounds like you want the client side to be automated as well. Then the best solution is to use public-key encryption. You would ask your users to create a public/private key pair, save the private key on their computer, and send you the public key. Then when they log on, you would authenticate them via SSL. This is done by sending them a message encrypted with their public key... they decrypt it with their private key, and send you the result encrypted with your public key. If, after you decrypt it with your private key, the message matches the one you sent, then their system is authentic (or they allowed their key to be stolen). This is all automated of course by the software.
You still can't authenticate their individual machine though, as they can copy their private key to another computer and still authenticate. Being able to interact with their machine only and not the user isn't currently possible, as the user has complete control over the machine. They can know anything it knows, and change it.
What you're asking for won't be possible unless/until "Trusted Computing" (such as Palladium) becomes universal. Then there will be a hardware or BIOS digital signature embedded in each computer which cannot be changed by the owner of that computer. External software will then be able to determine the user-independent identification of a computer system, no matter how many layers of IP it is hiding behind. This is being proposed by the DRM Nazis so that it'll be impossible to pirate software and so that computers can be identified anywhere on the internet in order to press charges against downloaders. This means that people will have to unregister software/songs/etc from one computer and re-register them on another before transferring their "rights" from one to another. This of course flies in the face of copyright law, and I shudder to imagine living under such a police state, but it may someday happen, and then you'll be able to do what you want.
Sincerely,
Tom Anderson
Order amid Chaos, Inc.