IN 2194 Peer-to-Peer Systems and Security, Summer 2014
General Information
The prerequisites for this class are a solid understanding of
operating systems, networks and system programming.
You must be able to write non-trivial programs in either C/C++ or Java
on GNU/Linux.
Lectures will be held Tuesdays from 2-4pm and Thursdays
from 1pm to 2:30pm in FMI 00.13.009A ("multi media room"),
starting Tuesday, April 8th 2014,
If you have questions that you need to ask in question, feel free to
drop in or make an appointment: Christian Grothoff,
Boltzmannstr. 3, Room 3.5.40. You can also find us most of the time on irc.freenode.net, #gnunet.
Syllabus
Specific topics that will be covered include:
- P2P applications, advantages and disadvantages of P2P systems
- common problems and operations in P2P systems
- routing in structured and unstructured overlay networks,
in particular distributed hash tables
- network address translation and traversal
- decentralized network size estimation
- reputation systems
- common attacks on P2P protocols and defenses against them
- anonymity, protocols to create anonymity and attacks on
anonymity
The various protocols are described in theory and practical
implementations of those ideas are discussed (in particular Freenet,
Bittorrent, Tor, JAP, GNUnet, I2P and Gnutella). The course will also
include a practical component focusing on the design and
implementation of a new P2P protocol or application.
The Project
You are free to choose a project for the course. The main
requirement is that is must related to the topics discussed
in the course. Some suggestions are at the bottom of this
page. If you have your own ideas, please keep in mind that the
motivation and originality of your idea as well as your
(experimental) evaluation of your project contribute significantly
to your grade, so you should pick something impressive - and
ensure that it can actually be done by you. You are encouraged
to discuss your preliminary ideas with the instructor.
Projects can be done individually or in groups of up to two
students. It is your responsibility to form and manage the
teams.
Note that for all projects you should feel free to discuss the
projects during the project phase in class and during office hours.
It is acceptable to discuss ideas, algorithms, or
approaches to solving problems and assignments with other students. We
encourage you to give and get such advice as it will help you learn
the material better and improve your ability to work in a team. If you
use existing code from other projects you must specify this in your
documentation and give proper attribution in the source code.
Project Proposal
Your first deliverable will be a 2-3 page project proposal. It should
describe:
- The problem you plan to study (be specific)
- Why you think it is important
- Related work you have found so far
- What you plan to do, including required, desired and optional
milestones
Your literature survey should be part of you work plan, and you should
plan to have it finished (in writing) by the deadline for the status report.
Project proposals are due on May 1st 2014 and should be submitted
via Subversion. You are encouraged to discuss project proposals with
us before the deadline.
Status Report
Your second deliverable will be a 1-2 page status report describing:
- What you have accomplished so far
- What you have left to do
- A week-by-week plan for finishing the project
It is suggested that you include your literature survey as an appendix
to the status report.
Status reports are due on June 15th 2014 and should be submitted via Subversion.
Project Presentations
Each project team is expected to give one in-class presentation
per team member on the project. If there are two team members,
the first presentation should focus on related work and the
project ideas, and the second presentation on the final design,
implementation and experimental results. To give the presentation,
you must first give a trial-run with an FSNSG member and get approval
to do the in-class presentation. It is your responsibility to
schedule an appointment at least a week before your presentation
is due. We will add the specific dates for each student's
presentation to the class schedule below. Please e-mail your final
slides (in PDF format) to the instructor at least 2h prior to the
presentation.
Project Submission
Programming projects must be submitted by 11:59 PM on August 8th 2014 (extended deadline).
Project code and documentation should be submitted via Subversion.
You should use
svn co --username $LRZ_ID --no-auth-cache https://projects.net.in.tum.de/svn-tum/tum2194
to checkout your repository. Please ensure not to include any
unnecessary (i.e., generated) files from the code you hand in such
as object files or executables. You are encouraged to use the
Subversion repository for all of your project development, not
just for the submission. We will not accept crashed hard drives
as an excuse for a failure to submit results on time, use our
repository as your backup.
We expect that the projects will require a substantial amount of software design and
implementation. The software produced will be graded based on manual
and automatic code quality assessments, the quality of the
documentation and student-provided (automated) tests.
Final Project Report
In your final project report, please describe what your system actually
does provide (what really works, not what you planned to do),
the bugs you are aware of, experimental measurements (setup,
data, interpretation) and possible directions for future work.
As usual, reports will be graded on quality, not quantity.
Final Project Interview
Finally, we will have individual project interviews with each
student. During these interviews, we will provide feedback
on the project and ask questions about the course material and
the individual student's project (to ensure that
we understand their individual contributions). The final project
interviews are expected to last between 15 and 30 minutes, with
no more than 20 minutes being used for our questions.
You need to schedule your individual (not team) presentations with
me to happen between August 4th and August 14th. Alternatively,
you might be offered the possibility to present at the GNU Hacker
Meeting 2014 August 15-17th. In exceptional cases, you might
present at a later time to Bart Polot. In that case, your final
grade for the course may be entered into the system with
significant delay.
Grading
You will be evaluated on the basis of the course project and in-class quizzes.
Achieving more than half of the points on the quizzes will result in a
0,3-bonus to the final grade.
For the course project, the different deliverables are weighted as follows:
Project proposal | 10 Pts |
Status report | 5 Pts |
In-class presentation | 15 Pts |
Final project report / paper | 40 Pts |
Code quality | 15 Pts |
Individual oral discussion of course and project | 15 Pts |
For the final project report, equal weight will be given in the evaluation to
the following four aspects
- motivation / originality
- clarity of the paper presentation
- thoroughness of the evaluation
- analysis of related work
The presentations and discussions will be done both in-class and
individually; the interviews at the end of the course will be
done individually and may go beyond just the scope of the project.
Software
I recommend that you use a Debian GNU/Linux
system for this class; your project's code must run on (some) GNU/Linux system.
Submission of Assignments
Each team will get access to a Subversion
repository. Assignments must be committed to that repository by the respective
deadline. Students are encouraged to use the repository for version control while
still working on the assignment. Only the last version committed before the deadline will
be used for grading.
For group projects, you should select a group in Moodle.
Your team is then to submit the materials into the /team???/a1/
directory in Subversion, which will be shared between the team members.
The ??? should be replace with your group number in Moodle.
Course Materials
Each lecture will begin with a short quiz covering both material from previous
lectures and the preparation materials given below. You are expected to study
the preparation materials before the lecture. Lectures will be fast-paced and
you will be unable to answer questions on the quiz and may struggle to follow
along if you did not study the given materials in advance. You do not have to
review the slides in advance.
08.04.2014: Introduction to Peer-to-Peer Networks
- Preparation
- Take a course on C programming, and
read a book or
two.
- Slides
- slides, video
- Quiz
- quiz
10.04.2014: The GNUnet Architecture
- Preparation
- A Tutorial for GNUnet Hackers (C version),
A Tutorial for GNUnet Hackers (Java version)
- Slides
- slides
15.04.2014: Peer-to-Peer Security
- Preparation
- Secure Coding Guide: Avoiding Buffer Overflows and Underflows,
A Survey of Peer-to-Peer Network Security Issues
- Slides
- slides
24.04.2014: Unstructured Networks and Network Size Estimation
- Preparation
- Gossip-based counting in dynamic networks
- Slides
- slides
29.04.2014: Bitcoin
- Preparation
- Zeitgeist: Addendum (apply critical thinking), BitCoin: A Peer-to-Peer Electronic Cash System, bmoney
- Slides
- slides
06.05.2014: Network Size Estimation and Random Peer Sampling
- Preparation
-
Brahms: Byzantine Resilient Random Membership Sampling
- Slides
- slides
08.05.2014: Algorithms for Routing in Structured Overlay Networks
- Preparation
- A Survey and Comparison of Peer-to-Peer Overlay Network Schemes
- Slides
- slides
13.05.2014: NAT Traversal and Network Neutrality
- Preparation
- Behavior and Classification of NAT Devices and Implications for NAT-Traversal
- Slides
- slides
15.05.2014: Incentive Systems
- Preparation
- Reputation in P2P Anonymity Systems
- Slides
- slides
20.05.2014: Anonymity I
- Preparation
- Tor: The Second-Generation Onion Router
- Slides
- slides
22.05.2014: Anonymity II
- Preparation
- Tor Stinks (U)
- Slides
- slides
27.05.2014: Evil Networks
- Preparation
- A survey of botnet technology and defenses
- Slides
- slides
03.06.2014: Attacks!
- Preparation
- TOP SECRET//COMINT//20291123: (U//FOFU) Tor,
Distributed Routing in Small-World Networks
- Slides
- slides
05.06.2014: Future Networks
- Preparation
- Why Future Internet research?,
Towards a Future Internet
- Slides
- slides
12.06.2014: Student Presentations: Designs and Related Work
- Taxable anonymous digital cash
- Mueller (pdf)
- Multiplicative Secret Sharing
- Buenger, Arias
(pdf)
17.06.2014: Student Presentations: Designs and Related Work
- Axolotl Rachet
- Strasser, Lotz
- GNUnet support for Git
- Kruk, Carvalho (pdf)
24.06.2014: Student Presentations: Designs and Related Work
- Improved MQTT
- Frey, Sawadski (pdf)
- Brahms
- Galtsev, Migal (pdf)
26.06.2014: Student Presentations: Designs and Related Work (begin: 13:30)
- Group OTR
- Teich, Theiss
01.07.2014: Student Presentations: Implementations and Results
- Scribe
- Zhdanov
- Axolotl Rachet
- Strasser, Lotz
03.07.2014: Student Presentations: Implementations and Results
- Multiplicative Secret Sharing
- Buenger, Arias
07.07.2014: Talk @ TUM: Peter Schaar
- Technik, Recht und Überwachung, HS 1, 18:00
07.07.2014: Podiumsdiskussion im Literaturhaus
- Überwachung total. Wie wir in Zukunft unsere Daten schützen
08.07.2014: Student Presentations: Implementations and Results
- Taxable anonymous digital cash
- Dold, Mueller
- Improved MQTT
- Frey, Sawadski
- Group OTR
- Teich, Theiss (pdf)
10.07.2014: Student Presentations: Implementations and Results
- Brahms
- Galtsev, Migal
- GNUnet support for Git
- Kruk, Carvalho
- Axolotl Rachet
- Strasser, Lotz
15.07.2014: Talk @ TUM: Rebekah Overdorf
- Blogs, Comments, and Twitter Feeds: A Study of Domain Adaptation in Stylometry, 03.07.023, 14:00
15-17.8.2014: GNU Hackers' Meeting
GHM 2014 at LRZ/TUM.
Project Ideas
- Byzantine Fault-Tolerant Decentralized Random Peer Sampling
- Many protocols require the ability to pick a "random" peer.
But how can this be done securely in an open network?
Fortunately, there are research papers on this subject.
But do they work in practice?
- P2P communication using DNS, SMTP, SCTP, Satellite, ...
- GNUnet can communicate over various protocols already (UDP, TCP, HTTP, HTTPS, WLAN, Bluetooth,
UNIX Domain sockets); how about adding something more interesting?
- Implement solution to the SMP
- The Socialist Millionair Problem (SMP) is a common building block
for privacy-preserving computations, and in particular can be used
to securely verify a shared secret.
- Improve NAT traversal
- There are many NAT traversal techniques out there. Show off your
network hacking skills and improve GNUnet's NAT traversal
success rate (we can provide hardware for testing)
- More DHTs
- GNUnet has R5N, but are there better DHTs out there?
How about a DHT that performs range queries?
Any DHT is fair game, even something simple as
Kademlia might do, if the implementation and evaluation are done well.
- Protocols for in-network P2P monitoring to detect ongoing attacks
- Many recent attacks on I2P have at least been detected by their
internal monitoring. Can you improve our means to detect
attacks?
- Distributed constraint optimization (DCOP)
- Why should peers only exchange data? Let them compute!
There are various proposals for protocols to perform
distributed constraint optimization. Can you make
any of them work?
- Voice-over-IP
- gnunet-conversation needs love. Features like group conversations
(without host?) could be interesting. Build the next P2P VoIP system!
- Build a distributed search engine
- Google biases and filters results, based on who you are and where you
live. Write a better search engine that is purely P2P and thus
does not need advertising and is harder to reach for the censors.
- M2M applications
- P2P doesn't have to be between users. Machine-to-Machine communication
is said to be the next big thing (TM). From sensors (collective data analysis)
to vehicles (congestion control, accident avoidance) and
industrical control systems (supply chain management, disaster recovery),
can you build the next big P2P application?
- Asynchronous (reliable) messaging (a la WebSphere MQ)
- Messaging is a basic building block of the modern service oriented
architecture. Can you devise a secure, high-latency P2P messaging
service?
- Freedom of Information
- Build a decentralized system for news distribution (Podcast, blogs,
books, news) with the ability to filter and archive what is important
- Got other ideas?
- Tell us!
Christian Grothoff