summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md11
1 files changed, 10 insertions, 1 deletions
diff --git a/README.md b/README.md
index 0e04d85..39eba7c 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,20 @@
# external libraries
* https://github.com/kokke/tiny-AES-c
+* libmd-dev for sha1.h and sha2.h
# todo
* use ppoll
* implement BEP-0042 DHT security extension, requires crc32c library
* metadata receiving from uTorrent does not work for some unknown reason
-* uses A LOT of bandwidth, implement packet deduplication
+* uses A LOT of bandwidth, implement packet deduplication (fixed?)
+
+# anti sybil measures:
+* detecting sybil with buckets > 32 (done)
+* disallowing IP addresses to be added into our own bucket that already exist in the routing table (done)
+ - currently only if IP address is the one that causes the split, this may be suboptimal
+* TODO: accept every replied node into the routing table only after pinging it with a random ID, storing in t encrypted first MAXT-1 bytes of the id that it sent with packet that generated a replied(). upon receiving the reply, if the r/id and decrypted t don't match in MAXT-1 bytes, ignore the node (it's a sybil attacker).
+ - MAXT-1 instead of MAXT because MAXT sized ts are sent in get_peers queries
+ - only consider possible nodes when reading "nodes" and "nodes6" in responses when responses are verified with this strategy, I think this prevents massive data sendings because of poorly programmed sybil nodes and poorly programed travnik.
# known non-posix
* `MSG_DONTWAIT`, `SOCK_NONBLOCK`: replace with `fcntl` `O_NONBLOCK`