zFire writes some more fibs in his forum today:
If you or any of your alts are LL banned from SL, your other accounts are subject to the same.
LL and zRZ Link alts the same way, for the same reason.
If Person A is not the same human as Person X, but one of them later turns out to be a copybot, a computer would think they are the same.
For security reasons this is good. If they know and trust eachother that much and one of them is a CB, it is highly probable that they both are. At the very least one will jump onto the others account as needed. (If they are banned, blocked or need to pick a fight)
Now let us get one thing clear at the outset. What zFire here is proposing is the well known ad hominem fallacy known as “guilt by association”. Consider:
Fred is a thief
Mary is Fred’s wife
Therefore Mary is also a thief.
In law, of course, we would not countenance even a prosecution of Mary unless we actually had some evidence that Mary is a thief. Nevertheless this argument often feels instinctively right to shallow thinkers. Let us consider a variation:
Fred is a wife murderer
Mary is Fred’s wife
Therefore Mary is also a wife murderer.
Now that one is obviously wrong. But many people assume that people who know one another must share their morality and ideals. The idea goes against sound reason, psychology of human behaviour, natural justice and, often, common sense. But we won’t disabuse zFire of this idea, so let’s move onto the fib.
Once again zFire tells people that Linden Labs detects alts the same way that he does – through IP address matching. We must sadly leave aside his odd belief in sentient computers (no, zFire, computers do not think anything. We leave the thinking to people). nevertheless he is wrong. Linden Labs know that IP address matching is a terrible way to try to identify alts, and all the evidence I have seen is that they simply do not use it.
Linden Labs are much more clever about what they do. They identify people based on the hardware they use to connect. Not the IP address which gets shared between multiple people who often have little to do with each other. In this way, unlike RedZone, they avoid catastrophes where they would ban entire countries that use shared proxy servers (like RedZone did to the United Arab Emirates).
Specifically, the code in the Second Life clients that authenticates users to the service passes hashed copies (hashing is a type of encoding) of the mac address (media access control, or link layer addresses are used to talk to other equipment on a single network link and differ from IP addresses in that they are usually tied to a specific piece of hardware) and also the identifier on your hard disk. Both pieces of information are passed back to Linden Labs, who record this and thus know who logged into Second Life on your computer.
This works much better than IP address matching because people have literally shared computers if they match in the database. Nevertheless it is not perfect. If someone is banned from SL, and they used your computer, you may be banned too. In such cases, a polite appeal to Linden Labs, offering proof you are not the same person as the banned one has historically proven successful for people so affected (I personally know of two such cases).
For the curious geeks or anyone inclined to disbelieve me, below is a snippet of the second life client code, taken from the lluserauth.cpp file. I have bolded the key sections. Notice how the mac address and host id get wrapped up in the XML authentication packet which is sent to the second life service at login. Linux users looking at this file themselves will see they have an interesting variation.
LLMD5 md5Mac((const unsigned char *)strMac.c_str());
LLMD5 md5HDD((const unsigned char *)strHDD.c_str());
// create the request
XMLRPC_REQUEST request = XMLRPC_RequestNew();
// stuff the parameters
XMLRPC_VALUE params = XMLRPC_CreateVector(NULL, xmlrpc_vector_struct);
XMLRPC_VectorAppendString(params, "first", firstname.c_str(), 0);
XMLRPC_VectorAppendString(params, "last", lastname.c_str(), 0);
XMLRPC_VectorAppendString(params, "web_login_key", web_login_key.getString().c_str(), 0);
XMLRPC_VectorAppendString(params, "start", start.c_str(), 0);
XMLRPC_VectorAppendString(params, "version", gCurrentVersion.c_str(), 0); // Includes channel name
XMLRPC_VectorAppendString(params, "channel", gSavedSettings.getString("VersionChannelName").c_str(), 0);
XMLRPC_VectorAppendString(params, "platform", PLATFORM_STRING, 0);
XMLRPC_VectorAppendString(params, "mac", mac, 0);
// A bit of security through obscurity: id0 is volume_serial
XMLRPC_VectorAppendString(params, "id0", hdd, 0);