Where I work, one of our products includes online chat and messaging
services. There are some rather non-nice people out there that can make an
online chat unpleasant. Microsoft, in fact, just announced that they are
basically giving up, in fact, in many countries, because of this:
http://asia.reuters.com/newsArticle....toryID=3496061
We're not ready to give up yet, so we are still trying to find ways to
control the non-nice people.
Right now, I've got two ways I can suspend someone from the chat and
messaging service.
1. I can ban IP addresses or ranges. However, that doesn't work well for
jerks on dynamic IP.
2. When our software is installed, it generates an ID number and stores it
somewhere (registry, I think...I'm a server guy, not a client guy, so don't
know all the details). That ID number is basically what the software uses
to log in to the chat/messaging server. I can ban by that ID number.
However, there are some people who've figured out that they can change that
number.
*If* we only had paid users, things would be a great, because that ID number
could be used on the server to look up account information, such as a credit
card number (it's a subscription service, so there is a credit card on
file). Banning by credit card would be pretty effective. If I ban someone
and they have to come up with a different valid credit card to get around
the ban, I think that would be good enough.
However, people don't have to pay for our services. There is a free trial,
and for many of our services, you can even stay free forever, with lower
resource limits or reduced functionality compared to paid users. For the
free users, that ID number does NOT lead to anything interesting like a
credit card or a billing address.
So, what I'm looking for is some way I can identify a machine, so that I
can ban that machine from the chat and messaging service, that meets the
following two requirements:
1. It is a pain for the user to change this identification.
2. It doesn't raise too many privacy concerns for the user.
Here's what I'm currently thinking of. Can anyone see anything wrong with
this from a privacy point of view?
1. When the user logs in, note a bunch of characteristics of the machine,
such as:
IP address
MAC address
Disk size
RAM size
Timezone
Type of optical drives
Hash of browser home page URL
% of disk space used
Version of OS and various system components
and other things like that...none of these really identify a machine, but
that's OK (see below).
2. When someone gets banned, remember the values of those characteristics.
Associate this with their ID number.
3. When someone logs in as a free guest, using an ID number we've not seen
before, take their characterstics, and compare them against those on the
recently banned list. If one is found that is very close (e.g., similar IP
address, matches on most of the others), then add this new ID to the ban
list, and don't allow them in.
(Yes, % of disk space used might seem odd to use...but most bans are not
permanent, so things like disk space used can be useful over the short
term).
I've got a hash of the home page URL there, rather than the URL itself,
because all I want to be able to tell is if it the same URL or not, so by
using a hash that is not computationally feasible to reverse, there's a lot
less of a privacy problem.
Any thoughts on this? Any suggestions for things to include in the
characteristics list? Any to exclude? Or is this approach totally bogus,
and if so, anyone have any other ideas?
--
Evidence Eliminator is worthless: www.evidence-eliminator-sucks.com
--Tim Smith


Reply With Quote