zinidyeah, nice rules: 60% of members are in council now, so council will vote for council forever
jonaswwhat?
Holgerhas left
jonaswI’m pretty sure that’s incorrect
Ge0rGindeed.
jonaswhttps://xmpp.org/about/xsf/members.html we have many more members
jonasweven though that page needs updating
jonasw(preparing a PR)
zinidjonasw, I checked https://wiki.xmpp.org/web/Membership_Applications_Q4_2017
Ge0rGthose are slightly more than nine.
Ge0rGzinid: there are four application periods per year, you need to take them all together
jonaswzinid, reapplication is needed yearly, not quarterly
zinidah
zinidso where is the full list?
jonaswso in Q4, at least four dropped out and up to one will be added
jonaswI linked it, zinid
jonaswhttps://xmpp.org/about/xsf/members.html
zinidjonasw, is this page up to date?
jonaswI am updating it with the new council and board election right now
jonaswotherwise it is
zinidok, I didn't know you can reapply only once a year
jonaswif someone could double-check I didn’t mess up here, then I’ll merge it: https://github.com/xsf/xmpp.org/pull/385
zinidwhatever, I actually have a question about processing empty values in data forms
zinidfor example, the type of the <field/> is 'jid-single' and the value is <value/>
zinidwhat to do in this situation?
zinidempty string is clearly not a JID
ZashMmmmmmm, yeah, that's somewhat ambigous IIRC
zinidyeah, and if we forbid empty values, then how to clear the field?
Zash<field><value/></field> == empty string and <field/> == NULL or something like that
jonaswzinid, that’s simply invalid if the field is <required/>
moparisthebesthas joined
jonaswotherwise, I’d treat it as absent
jonaswthere is:
> Note: Data provided for fields of type "jid-single" or "jid-multi" MUST contain one or more valid Jabber IDs, where validity is determined by the addressing rules defined in XMPP Core (see the Data Validation section below).
zinidjonasw, absent meaning you should ignore it, or set it as "not set"?
jonaswsince <value/> violates that, I’d treat the field as absent or unset
ZashThere's also the case of submitting a partial form.
jonaswwhich is either an error if the field was <required/> or leads to some defaulting if it wasn’t
zinidjonasw, I'm not talking about required, it's obvious in this case
jonaswzinid, well, if it’s not <required/> surely the business logic of the form already knows what to do if the field is missing?
zinidjonasw, indeed, what to do? keeping the field values untouched in the database or remove it?
zinid*value
jonaswI’d NULL it
zinidI actually tend to think you should not set <value/> at all if you need to erase it
jonaswpossibly
Zash<value/> == <value></value> == ""
jonaswwhich isn’t a valid JID
ZashNope
ZashSo you get an error back
jonaswso both empty <value/> and no <value/> at all violate the note I quoted above
zinidanother issue: the type is 'jid-multi' and you got <value/><value/><value/>
jonaswI hate XEP-0004
zinidnah, we just should clarify it
zinidthe xep is okayish
zinidIMHO
jonaswand cut it in two pieces
zinidpsi sends <value/> inside jid-multi field, I have even work-around for this in the data form parser
zinidso, most likely, to keep backward compatibility we need to treap empty <value/> as no <value/> at all and should set internally the field to default value (e.g. NULL)
zinid*to treat
zinidsimply put, treat this situation as a "default value"
intosihas joined
moparisthebesthas joined
moparisthebesthas joined
danielhas left
danielhas joined
danielhas left
danielhas joined
danielhas left
danielhas joined
danielhas left
danielhas joined
marchas joined
ralphmhas joined
danielhas left
danielhas joined
Alexhas joined
GuusGeorg, Kev, could you please provide a snippet for https://xmpp.org/about/xmpp-standards-foundation.html ?
goffihas joined
Alexhas left
danielhas left
danielhas joined
Steve Killehas left
ralphmhas left
Steve Killehas joined
vanitasvitaehas left
danielhas left
vanitasvitaehas left
moparisthebesthas joined
moparisthebesthas joined
Martinhas joined
danielhas left
danielhas left
moparisthebesthas joined
moparisthebesthas joined
jcbrandhas joined
jerehas joined
ralphmhas joined
efrithas joined
Syndacehas left
Syndacehas joined
jubalhhas joined
jubalhhas left
Alexhas joined
danielhas left
archas left
archas joined
intosihas left
jcbrandhas left
jcbrandhas joined
archas left
archas joined
archas left
archas joined
Ge0rGhas joined
archas left
archas joined
la|r|mahas joined
Ge0rGhas left
ralphmhas left
jubalhhas joined
intosihas joined
lskdjfhas joined
Ge0rGhas left
lumihas joined
jubalhhas left
moparisthebesthas left
moparisthebesthas joined
pep.has left
danielhas left
efrithas left
blablahas joined
efrithas joined
blablahas left
blablahas joined
intosihas left
blablahas left
blablahas joined
efrithas left
jerehas left
jerehas joined
lskdjfhas joined
efrithas joined
Alexhas left
intosihas joined
intosihas left
Zashhas left
Alexhas joined
blablahas left
blablahas joined
blablahas left
blablahas joined
zinidhas left
Guustest
danielGuus: 👍
Guustx
Guushas left
Zashrx
Valerianhas joined
blablahas left
danielhas left
intosihas joined
moparisthebesthas joined
moparisthebesthas joined
intosihas left
ralphmhas left
danielhas left
danielhas joined
jonaswhas left
Alexhas left
Alexhas joined
lskdjfhas left
lskdjfhas joined
Tobiashas joined
mathieuiis there a way to know if we already voted?
KevMemberbot will tell you, I believe, when you say hello to it.
jonaswyup, it will
jonasw> (14:41:04) Memberbot: You have already participated in this election. Would you like to recast your votes? (yes / no)
mathieuiright, thanks
jubalhhas joined
Tobiashas left
Holgerhas left
Holgerhas left
ralphmhas left
SouLhas left
danielhas left
danielhas joined
efrithas left
Steve Killehas left
efrithas joined
danielhas left
Valerianhas left
danielhas left
Tobiashas left
Steve Killehas joined
danielhas left
la|r|mahas left
la|r|mahas joined
Valerianhas joined
jerehas left
jerehas joined
vanitasvitaehas left
ralphmhas joined
danielhas left
danielhas left
vanitasvitaehas left
Tobiashas left
jubalhhas left
Alexhas left
Alexhas joined
marcGe0rG, jonasw, I plan to provide a field (optional or required, determined by the service) to specify the name of the inviter, what do you think?
jonaswsorry, I lack context. where would you provide that field?
marcjonasw, user invitation
marcSorry :D
jonaswand where’d that field be?
marcSuch that we can provide something like "You were invited by X to join..." on the invitation page
marcAd-hoc command
marcFilled out by the inviter
jonaswhmm
jonaswthe issue with that type of names is that they can easily be spoofed
jonaswGe0rG had some thoughts on this type of spoofing in the context of invitations IIRC
marcSure, it's not a security feature :)
jonaswit could be misleading though
marcWell, you have to send the URL to somebody, if the user trust this URL then there is no problem
marc(because it trust the mail, SMS, ...)
Valerianhas left
Valerianhas joined
marcYou can think of it as security feature if somebody tries to manipulate/replace the invitation URL ;)
Ge0rGmarc: I think it depends on how you implement it.
Ge0rGmarc: if it is an additional url parameter that contains the plaintext name, it's rather Meh.
marcGe0rG, that's up to the service
Ge0rGmarc: if you only attach a token to the URL and the user's JID is somehow obtained from the server via the token, it's a bit better
marcThe XEP defines the field
marcHow the invitation page is implemented is out of scope of this XEP
Ge0rGmarc: I see merit in defining the OOB behavior as well
marcIn my current implementation the name is fetched from a database via the token
Ge0rGmarc: so your XMPP server must also be a web server.
marcGe0rG, well, providing a web page is also optional
marcMy first implementation just uses the xmpp URI
marcand generates a QR code
marcWorks nicely without web site etc.
Ge0rGmarc: so where is the inviter's name displayed, then?
danielhas left
Ge0rGmarc: does it also work nicely without an XMPP client?
marcGe0rG, the name is displayed on a web site, if you provide one
marcGe0rG, what works nicely?
Ge0rGmarc: the QR code
danielhas left
marcthe QR code is display in the xmpp client
marcbut you could also just send the xmpp uri via SMS or ...
Ge0rGmarc: and then?
Ge0rGmarc: how does your friend open an xmpp: URI without an XMPP client?
marcGe0rG, add a link with a download URL for a xmpp client ;)
Ge0rGmarc: why not just use easy-xmpp-invitation? :P
marcGe0rG, what's easy-xmpp-invitation?
marcah I see
marcyour website template
marcGe0rG, that's nice but why should it be required by the XEP?
marcI prefer a web site for invitation which displays the QR code, provides information about clients etc.
marcBut why should this be required?
danielhas left
jubalhhas left
Ge0rGmarc: how do you generate the url for the web site where the inviter's username is displayed?
marcGe0rG, the name is fetched from a database not included in the URL
marcYou could include it in the URL
marcIf you like but I don't care how that's implemented
Ge0rGmarc: you send me a QR code with xmpp:.... How do I know the URL of the web page?
marcOut of scope IMO
lovetoxhas joined
marcGe0rG, either I send you a URL or a bare xmpp URI
Ge0rGmarc: where do you get the URL from?
marcIn best case you're next to me and just scan the QR code from my display of my mobile phone
marcGe0rG, the URL is generated by the server and sent back to the inviter
Ge0rGmarc: so the response to the ad-hoc command is an xmpp: URI and a web link?
Ge0rGor either?
marcAlways a token
marcAnd, if provided, a URL
marcthe xmpp URI can be generated by the client
Ge0rGSo the client needs to construct the xmpp: URI from the token?
marcYes
Ge0rGAnd the server could send back an easy-xmpp-invitation URL or a mod_invite URL or some other black magic?
marcGe0rG, it can send back a URL to some web site, yes
Ge0rGSorry for the many questions, I'm trying to understand the protocol.
Ge0rGmarc: will that be a generic website or a personalized one?
marcI thought it is not that complicated and straightforward :D
Ge0rGmarc: life is full of corner cases.
marcGe0rG, depends on the server / service
Ge0rGmarc: so if your server sends personalized links, your client can forward the web URL and be good, but if my server returns a generic URL, and my client forwards only that, it's worthless?
marcthey could also provide a URL to some porn web site if they like ;)
Ge0rGbesides of the porn, of course.
marcGe0rG, sure, of course the web site should include the xmpp URI, QR code etc
marcOtherwise this web site wouldn't make sense
Ge0rGmarc: it could be a generic registration form or the ToS
marcNo, that's not good
marcWell, you could do this, of course
marcBut then the token is useless :D
Ge0rGmarc: that's my point.
Ge0rGmarc: so the XEP needs to specify that the returned URL is a personalized one that also contains the token (or a different token with the same functionality)
danielhas left
marcGe0rG, we could also make the token optional and the server can send a URL of some generic invitation web site
Ge0rGmarc: you don't need a XEP for that, do you?
marcGe0rG, if you would like to have a standard for clients to request an inviation URL you do
marcOtherwise, where do you get this URL from? Search on the web?
marcGuessing?
marcI'm not saying that this is the best "response" from a service but it is better than nothing :)
Ge0rGmarc: I'm saying that it's worse than nothing, if it is expected to be a specific URL
Ge0rGthe client needs to decide based on what it receives.
Ge0rGif it receives [URL=https://yax.im/register, token=deadbeaf], it doesn't know whether it must send on both or only the URL
Ge0rGso the URL needs to provide the same functionality as the token
Ge0rGbesides, it might be useful to return not just a token but an xmpp: URI, because the server might be better suited to construct it than the client
Ge0rGthen the server could return xmpp:free-hosting.com?token=deadbeef to a client logged in as user@legacy.free-hosting.com
marcSure, the server can also return the xmpp URI
lskdjfhas left
marcGe0rG, but the URL can still be optional, right?
danielhas left
Tobiashas joined
Ge0rGmarc: yes. The URL should be optional, I just would like to prevent "smart" server operators entering a generic URL there
marcGe0rG, yes, but we can not avoid it anyway ;)
Ge0rGmarc: but we can make it illegal via the XEP
marc:D
marcGe0rG, btw, I think your easy-xmpp web site should auto-detect the operating system / browser and suggest a client :)
Ge0rGmarc: I think you are right, which is why I wrote that into the TODO
marcah nice ;)
marcdidn't read it
Ge0rGtoo bad :P
sonnyhas joined
KevI've just updated the Board mailing list. It's now current members + Council Chair + ED + Secretary.
Guus... ED ...
GuusAh, Exec. Director?
GuusThanks Kev
sonnyhas joined
jonaswGuus, so I’m not the only one having to re-think each time they see the abbreviation "ED"
Guus"each time" <-- you've seen it before then? :)
Valerianhas left
efrithas left
moparisthebestha well I found a fool proof spam prevention system that would work for xmpp too, it's terrible, but it'd work
moparisthebestour support got a ticket at work from a user who wasn't getting our emails because they have a spam prevention system that replies to the email with a link the sender has to click to allow the email through, or whitelist the address, or something
efrithas joined
jonaswGuus, members list
moparisthebestso for unsolicited chat or subscription requests, server could message the user an http link that needs clicked before allowing it through... :/
SamWhitedmoparisthebest: that's basically the same as the proof-of-work model we talked about, except less automated
moparisthebestwhere is this discussion? must have missed it
SamWhitedthat could be the fallback if a PoW message gets sent but the potential spammers client doesn't support it
SamWhitedmoparisthebest: I'm not sure where or when; it was a while ago. TL;DR if you get a message from someone you don't know, send their client a relatively expensive problem they have to compute and respond to before you'll show the message to the user
moparisthebestI actually think this would work better in xmpp vs email, this user wanted the person at our company monitoring the system.noreply@ourdomain.com email to click the link...
moparisthebestyea the combination might be good
SamWhitedI've got a TODO to write up a spec for that actually; I should do that this weekend.
jubalhhas joined
moparisthebestyou should :)
jonasw*SHOULD :-)
SamWhitedmoves it up to the top of his list from the bottom that's off the screen and therefore was forgotten about
moparisthebestwith a message a link fallback, servers could sanely turn it on before client support was widespread
SamWhitedactually, my TODO was for using it with IBR2, but the same challenge could be reused for both probably
moparisthebestand you don't need to specify what happens with the link, if that happens you expect human intervention, servers might whitelist automatically, have a captcha, or whatever
HolgerWhat part of this needs a spec?
moparisthebestthe automated proof of work part
moparisthebestthe sending a link would not
SamWhitedHolger: the link part doesn't, but if we want clients to automatically respond to PoW challenges from the server that part needs a spec
vanitasvitaehas left
HolgerAh the client responds without automatically? What happens to people with old clients?
Holgers/without//
SamWhitedHolger: that's why you include a link to a captcha or something in the body. Old clients show that, you can click it and complete a human challenge instead
MattJThey click the link
HolgerAh.
SamWhitedJust like joining MUCs on Jabber.ru, which I think does this with clients that don't support their captcha forms (you get a link to the same form on the web)
MattJand here you go: https://xmpp.org/extensions/xep-0158.html#challenge-hashcash
MattJLater in the document: "A challenger MAY provide a text question in the <body/> element of a challenge stanza for clients that do not support CAPTCHA forms."
SamWhitedoh hey, would you look at that, been done
MattJThe problem I see with proof-of-work is that spammers have access to lots of CPU cycles (that typically aren't really theirs), and real users don't
SamWhitedIt's true, it doesn't stop botnets, it just stops every person with a laptop from being able to register hundreds of accounts and then send spam with them all day
Ge0rGEspecially mobile users don't.
MattJSo you'll flatten a user's battery a bit, and you'll cost a spammer some miniscule amount of money on a botnet or captcha-solving platform
SamWhited*slows down (not stops)
SamWhitedIt still forces them to use a botnet or captcha-solving platform, which is more work. And most users will rarely have to do this, only spammers would need to do it regularly
MattJPretty sure the user's battery will drain before the spammers deem it not cost-effective
SamWhitedI suspect anyways; I bet most "normal" people only communicate with people on their roster, and if we drain a users battery because their phone is in a botnet I'm pretty okay with that
MattJSamWhited, we had CAPTCHA on register.jabber.org, it didn't stop them, just slowed them down - doesn't solve much at the end of the day
SamWhitedSlowing them down is really the only point; it's the best we can do
Ge0rGLet's slow them down by retracting subscriptions from known spammers.
uchas joined
moparisthebestit wouldn't drain a mobile users battery at all, except a tiny amount once when they send a message to a new user they haven't sent one to before, right?
Ge0rGmoparisthebest: there is a little problem there: PoW is much more energy-expensive on a mobile CPU than on a GPU cluster.
moparisthebestand if botnets do indeed bother and implement this, you can just fall back to manual human-intervention-required link challenge
moparisthebestGe0rG, but it happens once per new message to new user max?
moparisthebestso like, maybe 30 times over the course of an entire xmpp account's life?
moparisthebestmaybe other people are far more popular than I am idk
jonaswGe0rG, depends on the PoW
jonaswmemory-hard proofs come into mind
ralphmhas left
jonaswscrypt or something
moparisthebestand yea you could do something that is harder on gpus, yep scrypt
Ge0rGjonasw: right, because OOM isn't a thing on mobile :P
danielhas left
jonaswGe0rG, it is, but using lareg amount of memory is expensive on GPUs
jonasw(and on FPGAs)
Ge0rGjonasw: we aren't talking about bitcoin mining parallelization here
Ge0rGor whatever-scrypt-coin
jonaswwhere large is something like ~100 MiB already, depending on the type of operations
Ge0rGYou can't expect an old Android phone to provide 100MB (plus JVM overhead) to calculate a PoW
jonaswI would expect that to work actually
jonaswI bet firefox needs more
jonaswfirefox gets swapped out then, I’m fine with that
Ge0rGjonasw: "Bug report: my browser gets killed when I add a friend"
danielhas left
moparisthebestan old android phone can't run conversations either so who cares
Ge0rGI think this is insane.
jonaswyour browser gets killed always anyways on those machines.
mathieuithis is crazy, yes
SamWhitedWe'd have to think about that, but the point is that we can think of something that's not too bad for mobile users but still does the job
moparisthebestthen you disable it on your client and solve http links by hand Ge0rG ?
jonaswI can’t really use my broswer + any other app on my Galaxy S3.
Ge0rGmoparisthebest: no, I just switch to WhatsBook.
jonaswwith WhatsBook, you need mutual subscription first anyways?
moparisthebestare you thinking this is something that would happen often?
jonaswI thought we had that as a possible sensible solution, too
Holgerjonasw: You don't.
efrithas left
jonaswHolger, hm, when we discussed this a few weeks ago, I think the consensus was that you need it, but w/e
danielhas left
Ge0rGmoparisthebest: unless we make PoW prohibitively expensive for normal users, spammers won't be slowed / stopped by it.
Holgerjonasw: I remember someone claiming that and me not finding a single commercial messenger that actually does that.
Holgerjonasw: And I think it's unusable as a general solution.
HolgerThough admittedly this PoW idea sounds even worse.
SamWhitedIf memory consumption and GPUs turn out to really be an issue it could also use an algorithm that relies on cache locality
vanitasvitaehas left
vanitasvitaehas joined
moparisthebestGe0rG, bcrypt and scrypt would like to disagree with you
moparisthebestthey were explicitly designed to be not so bad for normal users, and prohibitive for bad guys
jonaswfunny question, couldn’t the PoW be solved by a users server?
MattJYes, this would be interesting :)
mathieuinew DoS way
jonaswyou’d quota that of course etc., but for the occasional adding of a contact…?
MattJmathieui, it would encourage server admins to lock down their servers better :)
jonaswlike, 3 PoW / day / user, 60 PoW / hour in total or so
SamWhitedjonasw: that's an interesting idea; sounds like a possible DoS, but servers could be smart about it and say "this user is generating too many PoWs, what are they doing?"
jonaswSamWhited, exactly
jonaswthat’d solve the mobile issue
moparisthebestthat only helps good public servers being abused to send spam
mathieuimoparisthebest, and it will slow down bad servers just as well
jonaswit also gives servers an interesting metric on users sending a lot of subscriptions/new messages
SamWhitedThat only works if the server supports the PoW thing though; otherwise you still have to issue it to the client (or issue a captcha)
jonaswand if the server is overloaded with PoW, it could simply forward it to the client.
Ge0rGit would be better to have users do PoW to pay for their server.
jonaswSamWhited, ofc.
SamWhitedSo if a spammer has spun up their own server, you still have to support the original model
moparisthebestGe0rG, so xmpp spammers are going to buy super expensive miners, and try to use them for xmpp PoW ? seems unlikely
jonasw"the original model", SamWhited?
SamWhitedjonasw: sending a captcha/PoW to the client, I mean
jonaswyou’d send it to the user, the server can decide to intercept the PoW request and handle it by itself or forward it to the client
Ge0rGmoparisthebest: spammers will either distribute PoW to their botnet, where you will be paying for the PoW, or rent some gigahashes.
jonaswI’m not sure what you mean
moparisthebestI don't think they really have botnets now, just register on open servers and spam until banned
Ge0rGmoparisthebest: please stop arguing. The PoW battle has been lost.
jonaswGe0rG, not sure
moparisthebestthere is no golden solves everything problem, you can only annoy them a bit, slow them down for a bit
danielhas left
jonaswif you have a botnet, you’re probably better off putting that computing power into $cryptocoin
jonaswinstead of trying to spam
moparisthebestit's an arms race :P
Ge0rGmoparisthebest: we can make life really miserable for mobile users and slightly annoy spammers.
moparisthebestyou still haven't said how it would hurt mobile users at all?
Ge0rGjonasw: you need orders of magnitude more power for viable commercial mining
SamWhitedRight, if you have a botnet to spam with we can't stop you right now, but we can slow down your botnet so that you send less spam and possibly make it prohibitively expensive for the people who spin up a single server in their basemenet to send out spam
la|r|mahas left
moparisthebestare you mistakenly thinking this would happen on every message or something?
SamWhitedAnd we can do it without affecting users at all, I suspect
SamWhited*well behaved users
moparisthebesthow often do you add or message new users? how often does a normal user do that? I'm thinking very rarely
Ge0rGmoparisthebest: just to repeat my argument: if you make it sufficiently hard for spammers, it will be prohibitive for normal users.
moparisthebestand again that's just wrong Ge0rG
SamWhitedGe0rG: we're disagreeing with that argument. Why do you think it would be prohibitvely expensive for normal users?
jonaswI doubt we’ll reach an argument here
jonaswwe need data
Ge0rGmoparisthebest: okay, suggest a number of scrypt operations a user needs to perform for an initial contact.
jonaswmaybe some google scholar-ing on how botnets operate nowadays?
SamWhitedSpammers send lots of messages to people that aren't on their contact lists, normal users don't. That asymetry is what we're targeting.
Ge0rGSamWhited: we can target that with simple statistics, without annoying anyone.
moparisthebestGe0rG, whatever takes about 4ish seconds on say a samsung galaxy s4
SamWhitedGe0rG: where and how do you get those statistics?
MattJSamWhited, I agree that I think this is the best place to solve this problem
Holger"Q: My app crashes (or crashes other apps) when adding a contact. A: Don't worry, I know that you don't often add contacts."
moparisthebestyea you wouldn't make it crash
jonaswalso, shouldn’t this discussion move to spam@?
SamWhitedHolger: that's why we have to do research and find something that won't OOM everyone but is still relatively tricky
SamWhitedToo many rooms.
jonaswHolger, I still claim that users on devices with this low amount of memory are used to that
HolgerWe can add that to our response then.
Ge0rGOkay, just to get some numbers. "I managed to pull around 5.6KHash/sec on my Nexus 7 with all four threads." from https://rumorscity.com/2014/01/07/how-to-mine-litecoin-with-android/
MattJProof of work aside, it's very easy to identify accounts sending to a lot of non-contacts. Spammers will switch to subscription requests, but it's equally easy to spot (new?) accounts sending lots of subscription requests, and this is uncommon (not impossible for a legitimate user, just uncommon)
HolgerIndeed.
Ge0rGSo we are at ~20 KHashes for a first-contact
moparisthebestMattJ, you mean easy if you run a server with lots of users I guess?
MattJEasy on any server
jonaswMattJ, you assume that the server isn’t malicious
moparisthebestor, easy for a public server to spot new users of it's server
jonaswI find that assumption incorrect
SamWhitedMattJ: I agree, server operators should be doing that
MattJjonasw, that is an assumption in this case, malicious servers are a different thing
waqashas joined
moparisthebestyea explain how my private server with 4 xmpp accounts can see any of this data, easily or not
MattJBut that's not a problem we have today
stefandxmhas left
jonaswMattJ, it is
jonaswI think
HolgerAnd malicious servers won't respond to PoW requests?
moparisthebestHolger, if they don't do the pow or click the link and do whatever is there, no requests get through to the client?
jonaswfighting spam at the source is of course most sensible, but hard in a distributed system
moparisthebestso, it's not a problem
SamWhitedHolger: they will respond to PoW requests, and that's the point. It will slow them down because they'll be responding to *lots* of them.
moparisthebestand if they do pow and too much spam still gets through, turn off pow and go back to manual links
mathieuialso: if a server implements the PoW thing, it could "wall" the subscriptions unless it’s mutual
moparisthebestmake them play an html5 punch the monkey game and beat a high score to whitelist their jid :P
mathieui(e.g. "user A and user B want to communicate, B’s server does not implement PoW, B adds A, A sees nothing; A adds B because they know about it: the subscription is established")
moparisthebestor A's server sends an https link to user B and when clicked lets it go through
Ge0rGyou can rent 500MH/s for three hours for ~3USD. That accounts for 100 Millions spam messages.
Ge0rGif you price a single spam message at 20KH scrypt.
MattJCase closed :)
HolgerSamWhited: I got the idea, I just don't see the gain in throttling them to, dunno, some hundreds of thousands of messages per day and CPU core or whatever. Do they really send millions per day right now?
HolgerWhat Ge0rG said.
jonaswGe0rG, "ouch"
Ge0rGmoparisthebest: so will you stop now?
zinidright, what will happen is that spam will become a bit more expensive for the customers 🙂
Ge0rGsource for MH price: https://www.miningrigrentals.com/rigs/scrypt
SamWhitedHolger: I don't know. More research would definitely be required, I just suspect we could slow them down a bit
moparisthebestand are you sure you can use that for arbitrary scrypt challenges Ge0rG ?
Ge0rGmoparisthebest: again, spammers will just use whatever botnet they can get away with.
jonaswmoparisthebest, if you can’t *now*, as soon as you can use this to make some financial gain (e.g. spam), they will adapt so that it can be used for that
danielhas left
Ge0rGmoparisthebest: even when running on desktop Windows malware, you are several orders of magnitude faster than on a mobile device.
moparisthebestpossibly, but then you are excluding spammers who don't have botnets
jonaswmoparisthebest, even a spammer with their own server can easily outperform that challenge
moparisthebestare there challenges that are faster on ARM than amd64 ?
Ge0rGmoparisthebest: let's just exclude all spammers by definition. Congratulations, we have won the spam war.
jonasw20 kH is not much
Ge0rGI can go back to work now.
SamWhitedBotnets would (hopefully) still be slowed down, non-botnets it might be too expensive. It's not a panacea, but it still seems like it could be a benefit if the idea works.
moparisthebestright there is no panacea
Ge0rGRight. So please pretty please let's focus on the ideas that make it actually worse for spammers than for users.
moparisthebestlike this one
moparisthebestor, what is your other idea?
Ge0rGmoparisthebest: read up my posts on the operators@ and standards@ MLs.
ziniddigitalocean started to provide high performance servers for computational tasks, for the record, I think 500MH/s would be nothing for those
jjrhhas left
Ge0rGmoparisthebest: I've exceeded my time budget for convincing you on pointless scrypt performance calculations, sorry.
Holgermoparisthebest: Mine is server-side filtering based on both message contents and meta data. Works relatively well for email.
moparisthebestGe0rG, I've been following a bit, but iirc most are geared towards running large-ish public servers with lots of data to analyze
moparisthebestand nothing for small private servers
HolgerSpamAssassin works just fine for small private email servers.
moparisthebestit does for email, I was under the impression most xmpp spam was too small for it to be effective
Ge0rGthere are many theoretical solutions that just won't work out. Like a distributed p2p reputation system.
SamWhitedHolger: I've been wondering about that too; do you have that tied to an XMPP server? How well does it work for the shorter XMPP messages?
Ge0rGSome months ago, 99% of spam was multi-line Russian with multiple links.
Ge0rGEasy to kill, just filter multi-line messages from strangers.
Ge0rGThen, they switched to single-line messages with two pastebin links. Still pretty easy.
moparisthebestsure and it's easy to do stuff like that, doesn't solve everything though, just like PoW doesn't
SamWhitedThose are good things to do as well
Ge0rGmoparisthebest: yes, but PoW WILL ANNOY USERS
HolgerSamWhited: I think it'll work quite well. Problem is it requires work.
zinidHolger, except that Bayes sucks for short messages
moparisthebestbesides I look forward to a future when all messages are encrypted base64 blobs :P
Holgermoparisthebest: So all solutions are equally adequate because none are perfect?
Ge0rGNow they send a subscription request + multiline / pastebin
SamWhitedYah, I suspect zinid is right and it won't work so well for XMPP messages, but I'd love to be proven wrong
Holgerzinid: Yes I would definitely not rely just on Bayes.
moparisthebestno, I'm saying you should implement non-perfect solutions because those are the only solutions we have Holger
waqashas left
Ge0rGmoparisthebest: you are saying we should implement bad solutions because there are no perfect ones.
lumihas left
Holgermoparisthebest: And I'm saying some non-perfect solutions are way better than others. So "nothing is perfect" is not a very convincing reasoning.
Ge0rGI haven't seen a spam message in weeks. Just the subscription requests
zinidHolger, there is very little research for short messages, I recall a couple of papers only, you can search google scholar with "sms spam" query
Ge0rGBTW, my next proposals would be:
- revert a pending subscription if a sender is classified as spam
- implement a cache of URLs sent by strangers, with counters, and block messages with a count > 3
Ge0rGMattJ: ^
moparisthebestand, again, both of those solutions only work for large public servers Ge0rG
moparisthebestI'm literally the only user of my xmpp server to get any spam
Ge0rGmoparisthebest: you know what? spammers are sending messages to non-existent accounts. You could easily set up a honeypot
SamWhitedGe0rG: I agree, both of those things are a good start and should probably be done (although they also probably need a way of dealing with false positives, but that's a different problem)
Ge0rGmoparisthebest: please log on your server messages sent to non-existent accounts
moparisthebestI'm not saying they aren't good solutions for large public servers, or that you shouldn't implement them, I just also want something that makes running your own server practical
MattJGe0rG, #2 won't work, the URLs can vary too easily
zinidmoparisthebest, set spam traps 🙂
Ge0rGMattJ: it's expensive to create a large number of shortened links
MattJTrivial to append #uuid
Syndacehas left
Ge0rGMattJ: besides, we could HEAD them :P
MattJTrivial to append ?uuid
zinidmoparisthebest, i.e. non-unsed accounts, but you publish them everywhere 😉
moparisthebestyea but is that what we suggest to people wanting to run their own servers
moparisthebeststart your server, setup SRV records, post non-existant accounts at random places
Holgerzinid: Yes, I don't have papers to prove my point. But many of the criteria used for email classification are unrelated to the length of the message body.
SamWhitedHolger, zinid: seems worth trying either way
Ge0rGmoparisthebest: you could just block messages from strangers with an URL.
zinidHolger, yes, maybe you can do that, no doubt, although the result is unpredictable
Ge0rGyax.im will send an error response "Blocked due to abuse", so a real sender actually will see a message about being blocked
uchas joined
moparisthebestGe0rG, what about subscription spam
zinidwhat about captcha btw?
Ge0rGmoparisthebest: see above
moparisthebestalso none of this works for encryption
moparisthebestspammers will soon start sending omemo messages :P
HolgerYes that's one of my complaints with E2EE.
Ge0rGmoparisthebest: I'm sure they will
Ge0rGI'm eagerly awaiting the day when I can block E2EE on my server :P
zinidHolger, ah, yes, E2EE, hehe
moparisthebestso back around to the original plan of replying with a https link with arbitrary things to solve on it
Ge0rGmoparisthebest: yes, let your friends play xbill or whack-a-mole.
Ge0rGor solve a reCAPTCHA.
moparisthebestyes, once, doesn't seem like too much to ask?
mathieuimaybe we could embed flash applications as base64 inside subscription replies
Ge0rGmoparisthebest: you can do all that on your private server
Ge0rGmoparisthebest: but it doesn't work well for public services
moparisthebestobviously doesn't happen if you send them an easy xmpp invite url or whatever
moparisthebestmathieui, it's 2017 you mean html5 applications
moparisthebestseems like it'd work equally well for public servers?
moparisthebestpublic servers just additionally have much more to go on, so maybe it wouldn't always be necessary
Ge0rGHolger: please tell MattJ about the normal-message-to-full-JID thing.
HolgerThe "some clients do that so servers can't throw the message away" thing?
jjrhhas left
HolgerSome clients do that so servers can't throw the message away.
HolgerWell they can but some users will be yelling at you.
jjrhhas left
Ge0rGHolger: yeah, that thing. Was it just a misuse of Gajim, or was that a really f***ing big problem?
jcbrandhas left
HolgerThe main problem was some mobile and/or JavaScript libraries doing that by default or something.
Steve Killehas left
HolgerNot sure about public clients. Maybe it was just Gajim.
Ge0rGHolger: I'd like to know which clients exactly... :>
HolgerI don't remember more than that sorry.
MattJMeh, I'm still going to go for it
jjrhhas left
HolgerI think the real issue is that type=normal is overloaded to do unrelated things.
Ge0rGRight.
Ge0rGLike MAM responses from a remote MUC
Martinhas left
Ge0rGAnd Carbons and ACKs and many other XEPs
Ge0rGAnd type influences both the meaning and the routing.
zinidhas left
HolgerYes on the one hand there's these type=normal messages addressed to individual *devices* and on the other there's type=normal messages addressed to humans, i.e. to accounts.
Steve Killehas joined
danielhas left
HolgerIf now everyone agrees that the latter should be addressed to the bare JID, the problem is partly solved.
HolgerBut the RFC disagrees, and so does some of the existing client code.
Ge0rGHolger: RFC6121 says you are not required to persist normal full-JID messages.