\documentclass[dvips,11pt]{article}

\usepackage[pdftex]{graphicx}
\usepackage{url}
\usepackage{fullpage}

\title{Peer to Peer Encrypted Group Chat}
\author{Brandon Davis \and Saikat R. Gomes \and Rahul Chatteree}

\begin{document}

\maketitle

\section{Introduction and Goals}
We plan to build a peer to peer group chat system. %
The goal is to support N-way text chat amongst peers, with a consistent view of
messages maintained by all participants, and confidentiality of any message
contents from non-participants. %

In contrast to systems like Google Talk, we will not rely on a central server to
route messages between clients, or impose a global ordering of messages. %
Messages will be sent directly between peers and decisions on message existence
and ordering eventually agreed upon amongst peers. %

\subsection{Non-Goals}
We do not have a goal of anonymity for our system. %
Encrypted messages and their sender/recipient can be seen in packets on the
network. %
This means the system will not support deniability with regards to who users are
communicating with. %

\section{Project Plan}
Due to the scope of our project and the various distributed problems involved,
we thought it appropriate to split the work into a series of smaller components
which build on each other to meet our final goals. %

\subsection{Peer to Peer Overlay}
First, we will implement a peer to peer routing layer. %
A client should be able to locate any other client which is currently active in
the network. %

To this end, we will likely implement something similar to the routing used by
distributed hash tables like Kademlia \cite{maymounkov2002kademlia} or Chord
\cite{stoica2001chord}. %
One difference in those systems is that they attempt to locate data items on
nearby nodes (for some definition of ``nearby''). %
In our case, peers will be looking for specific other peers, which means that
instead of locating items on nodes, we are just trying to locate nodes, and
there is only one node where we can find each peer. %

Challenges include bootstrapping new clients into the network, and communicating
across multiple network address translations.

\subsection{Chat Membership/Consistency}
The second task we must tackle is implementing a chat amongst some group of
peers. %
There are two main challenges here: maintaining consistent membership state at
each node participating in a chat, and presenting a consistent view of messages
to each member, with low latency. %

\subsection{Confidentiality}
The final task will be to ensure confidentiality of messages between chat
members. %
There are several ways that we envision doing this. %

The first is to simply have $(n-1)$ symmetric key channels between each node and
its individual peers in a chat of $n$ members. %
This will require $O(n^2)$ private keys, require no re-keying on membership
changes, and cost at least $O(n)$ encryptions per message
sent. %

Another is to use a group Diffie-hellman key exchange \cite{steiner1996diffie}
to produce a single private key for the group, with which all messages are
encrypted/decrypted. %
This will require care during membership changes, as a new key may need to be
generated to ensure only previous members may decrypt past messages and only
current members may decrypt future messages. %
However, only $O(1)$ encryption is required per message sent. %

\bibliographystyle{abbrv}
\bibliography{proposal.bib}

\end{document}
