Peer-to-Peer Systems and Security

Peer-to-Peer (P2P) systems provide an alternative architecture for networking applications. The main assumption of P2P systems lies in the fact that there are no centralized components. This contrasts with traditional client-server architectures where the servers are centralized and are thus deemed as privileged or central components. This assumption brings many advantages (and disadvantages) to P2P systems. To name a few, without centralized components the applications are more fault tolerant, have no bottlenecks affecting their performance. When designed carefully, they scale better as the implicit fault tolerance also helps for load balancing in the network. Moreover, due to the absence of centralized components, P2P systems are good candidates for providing privacy to the users, which is vital for democratic societies. Naturally, as we thread away from centralization in P2P systems, issues arise which could be efficiently solved by having centralized control. The most pressing issue is that of attackers, who appear as normal/good peers but have malicious intent. This course serves to provide you the knowledge about existing P2P protocols and methods on how to enhance efficiency without sacrificing scalability and security.

Briefly, the following topics are treated:

  • P2P Basics
  • Unstructured/structured P2P Systems
  • Distributed Hash Tables
  • Identities and Authentication
  • Attacks in P2P
  • P2P Applications: Multicast, Size Estimation, Botnets, Random Peer Sampling
  • Anonymity
  • Blockchain based ledgers
  • Cryptocurrencies & E-cash

Prerequisites

Programming experience in developing networking applications.

Project Work

In this course you will be asked to work a project implementing a P2P application. Please attend the first lecture on 23.04.2019 at 14:00 for further information on the project and its scope of work.

Lecture Material and Information

Lecture material and up-to-date information is available via Moodle.