Skip to content

Bot abuse protection

sonia v edited this page May 21, 2022 · 1 revision

Link to salmon repo and paper

https://gitlab.torproject.org/tpo/anti-censorship/rdsys/-/blob/main/pkg/usecases/distributors/salmon/salmon.go

https://censorbib.nymity.ch/pdf/Douglas2016a.pdf

Useful code insights

  • Dealing with proxies pool;

  • Using invitation tokens for users - however the amount of given tokens per trusted user should be monitored;

Questions and suggestions

  1. After giving a bridge address to any user, we should add this bridge to the used_bridges DB - it could be bridge as key and users as dict of values. According to Tor, we can detect when bridge usage drops - then we can check which users accessed the bridge and downgrade them;

  2. How should we handle new proxies that are blocked already? Check the bridges usage first (see previous suggestion);

  3. How can user become a trusted user? Salmon algorithm has Trust levels - when a Trust level is high enough (an empirically set value), user becomes a trusted user and can invite other users. The paper suggests that there are "friends" of an admin who can instantly get high Trust level and invite other users.

  4. We should set a time limit for invitation tokens - trusted user gets a unique token which can be used as an invitation for ONE PHONE NUMBER. Trusted user can get up to 3 tokens per (?) week. Apparently, we can't really check WHEN the user was registered, that's why I'm suggesting a simple limitation of given tokens.

  5. How do levels work? A promotion from level n to n+1 takes 2^(n+1) days, meaning that going from level level 6 (when u can give out tokens to ur pals) will take 2 months. We can discuss if that's a reasonable amount of time or not really. :)

  6. How does user banning work? Besides having a Trust Score/Level, we have to introduce a Suspicion Score - every time we detect a bridge usage drop, we increase a suspicion level of every user who has access to this bridge. The higher the level, the more "suspicion points" the user scores - because the agent infiltration probability on higher levels is lower.