R: R: R: [jdev] about spim techniques
Tijl Houtbeckers
thoutbeckers at splendo.com
Sun Aug 28 16:07:00 CDT 2005
On Sun, 28 Aug 2005 20:06:05 +0200, Peter Saint-Andre <stpeter at jabber.org>
wrote:
> So then the key moment becomes this: when someone sends me a
> subscription request. We know it is possible for some person (or bot) to
> barrage me with multiple subscription requests, but my client should
> block all but the first of those (in fact my server shouldn't send me
> anything but the first one until I log in again, since the subscription
> state hasn't changed at all). So now I am faced with a momentous
> decision: should I add this "person" (could be a nasty bot) to my
> roster? From what I've seen, most IM client's don't do a good job of
> helping me make this decision. Several things would help:
>
> 1. Automatic vCard lookup (who *is* this person?)
SPIM in the Vcard (common technique on ICQ actually)
> 2. Google the JID (perhaps it is on some nice person's blog etc.)
SPIM in the Google search (results).
> 3. Enable me to exchange some messages with the person -- "who are
> you?", "do I know you?", "do we know someone in common?", etc.
SPIM in the answer to those questions, or am I missing something?
Everything you say here seem to come down to what you say later:
"I don't think it's my server or my client that does this -- it's me. Who
better to figure out if the other person is
human than me? I don't think that automated bot-detection methods
(client-based or server-based) are nearly as
effective as human-to-human communication."
Of course it's very easy for a user to spot a spimmmer.. but isn't is
usually already too late then?
These I like better...
> Other possibilities:
>
> 4. Look the JID up in key servers or other repositories
> 5. Look the JID up in some yet-to-be-defined reputation system
> 6. Ask people in my roster whether they know this person (could be
> automated)
> 7. You ask someone whom we both know to send me a roster item exchange
> message (JEP-0144) and that person vouches for your identity to some
> extent (like an old-fashioned "letter of introduction")
> 8. You get someone whom we both know to sign your subscription request
> with his key (not very different from #5)
.. because they boil down to the same thing I said early. Automatically
trying to establish if there is a previous trust relationship between me
and the user trying to contact me.
I think from a technical point of view it shouldn't be too hard to define
the mechanism for this. The logical place for a user trying to contact
another user is to put any information about (like a link to a keystore or
reputation server) it as an extention in the subscription or message
packet in which it tries to do so. This will (of course) first enter the
server which will process it. If any of the information supplied *can* be
processed the server it will do so, then depending on it's findings and
configuration it can either:
- accept the packet and simply forward it to the user.
- hold the packet and request more credentials from the user the message
came from, or send a challenge, etc.
- flag the packet as suspicious and forward it to the user.
- drop the packet. (potentially send back an error, but I'm personally a
fan of doing this silent to frustrate spimmers).
When the client receives a suspicious packet, it should first try and
process it without the user noticing anything. If it still fails to reach
a conclusion, it could (depending on user settings) try and involve the
user, ideally without giving the spimmer any chance to display custom
information.
The only "generic" protocol addition we would need is something to flag a
packet as suspicious, and describe this procedure a little better. Maybe
also describe some good practises that would work in the existing network
structure (if I try to add you, and you try to add me, then it's unlikely
one of us is a spimmer).
All suggestions made on here that could be used to do the actual verifying
in this system can be defined seperate.
More information about the JDev
mailing list