From b27871c405881b371ad3c443639b138d36f667fb Mon Sep 17 00:00:00 2001 From: BeJade Date: Wed, 27 May 2015 18:40:51 +0200 Subject: [PATCH 1/8] Create pond.tex --- pond.tex | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 pond.tex diff --git a/pond.tex b/pond.tex new file mode 100644 index 0000000..9ecb936 --- /dev/null +++ b/pond.tex @@ -0,0 +1,37 @@ +\documentclass[xcolor=dvipsnames]{beamer} +\setbeamertemplate{navigation symbols}{} %remove navigation symbols + +\usepackage{etex} + +\usetheme{Warsaw} +%\usetheme{Boadilla} +%\usetheme{Madrid} + +\usepackage[arrow,curve,matrix,frame]{xy} +\xyoption{color} +\usepackage{color} +\usepackage{subfigure} +\usepackage{booktabs} +\usepackage{array} +\usepackage{tikz} +\usepackage{amsmath} + +\begin{document} + +\title +[Pond -- a non-instant messaging protocol by Adam Langley \hspace{0.5mm} \insertframenumber] +{Pond -- a non-instant messaging protocol \\by Adam Langley} +\author{Chitchanok Chuengsatiansup} +\institute{Technische Universiteit Eindhoven} +\date{} + +\frame{\titlepage} + +\include{intro} +\include{crypto} +\include{ratchet} +\include{network} +\include{bbs} +\include{future} + +\end{document} From 18d7bfecbd4e4c09abfde98c49444fa30cf99aea Mon Sep 17 00:00:00 2001 From: BeJade Date: Wed, 27 May 2015 18:41:59 +0200 Subject: [PATCH 2/8] Create intro.tex --- intro.tex | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 intro.tex diff --git a/intro.tex b/intro.tex new file mode 100644 index 0000000..12ea1f4 --- /dev/null +++ b/intro.tex @@ -0,0 +1,87 @@ +\begin{frame} + \frametitle{Pond} + + \begin{itemize} + \setlength\itemsep{1em} + \item Forward-secure asynchronous messaging (not email!) + \item Communicate with authorized users (no spam!) + \begin{itemize} + \item authorization done using PANDA key exchange + \end{itemize} + \item Attempt to resist network traffic observation + \begin{itemize} + \item connections made at random intervals\\ + (dummy or real send/fetch) + \item messages padded to a fixed length + \end{itemize} + \item More details see \\ + {\color{blue}{\url{https://pond.imperialviolet.org/}}} + \end{itemize} + +\end{frame} + +\begin{frame} + \frametitle{How Pond Works} + + \begin{itemize} +% \item Pond consists of users and servers +% \vspace{2mm} + \item Servers + \begin{itemize} + \item work as a ``cut-out'' + \begin{itemize} + \item never make connections + \item no one controls servers + \end{itemize} + \item provide availability + \begin{itemize} + \item users need not to be online simultaneously + \end{itemize} + \end{itemize} + + \pause + \item Users: + \begin{itemize} + \item have 3 types of connection + \begin{itemize} + \item key exchange: PANDA server (over Tor) + \item send/receive message: Tor server + \item large file transfer: Tor server + \end{itemize} + \item communicate only with servers + \begin{itemize} + \item own server to receive messages or upload files + \item recipient's server to send messages + \item sender's server to download files + \end{itemize} + \item make connections periodically + \begin{itemize} + \item time between each connection is exponentially distributed + \end{itemize} + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Messages} + + \begin{itemize} + \setlength\itemsep{0.5em} + \item Stored on server until they are fetched + \item Auto-erased from users' side after a fixed amount of time (currently 1 week) + \item Padded to a fixed size + \item Attachment also allowed + \begin{itemize} + \item small: included in a message + \item large: sent many small pieces or uploaded to server + \end{itemize} + \item Encouraged to be acknowledged + \begin{itemize} + \item reply to a message + \item send an acknowledgment + \end{itemize} + \item Server does not learn who the sender is + \end{itemize} +\end{frame} + + From c4ecd420d5790121c502ec8241ad6614a80f4b82 Mon Sep 17 00:00:00 2001 From: BeJade Date: Wed, 27 May 2015 18:42:29 +0200 Subject: [PATCH 3/8] Create crypto.tex --- crypto.tex | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 crypto.tex diff --git a/crypto.tex b/crypto.tex new file mode 100644 index 0000000..77d61d3 --- /dev/null +++ b/crypto.tex @@ -0,0 +1,22 @@ +\begin{frame} + \frametitle{Crypto Components} + + \begin{itemize} + \setlength\itemsep{0.5em} + \item TOR + \item TLS (for PANDA key exchange) + \item Curve25519, Ed25519, Salsa20, Poly1305,\\ HMAC-SHA256, Rijndael (with 256-bit block) + \item BBS: group signature + \item DH ratchet: encryption \\ + {\footnotesize\color{blue}{\url{https://github.com/trevp/axolotl/wiki}}} + {\footnotesize\color{blue}{\url{https://github.com/agl/pond/blob/master/client/ratchet/}}} + \begin{itemize} + \item forward secure through symmetric-key updating + \item future secure through DH ratchet key updating + \end{itemize} + \item All assumed to be good + \item Implemented in GO by Adam Langley + \end{itemize} +\end{frame} + + From 8e9b439a39c09720d82f368da319d3879d49a9a5 Mon Sep 17 00:00:00 2001 From: BeJade Date: Wed, 27 May 2015 18:42:52 +0200 Subject: [PATCH 4/8] Create ratchet.tex --- ratchet.tex | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 ratchet.tex diff --git a/ratchet.tex b/ratchet.tex new file mode 100644 index 0000000..4d68194 --- /dev/null +++ b/ratchet.tex @@ -0,0 +1,128 @@ +\begin{frame} + \frametitle{DH Ratchet: keys} + + \begin{itemize} + \item consists of sender and receiver version + \item generated using HMAC-SHA256 from DH key + \vspace{5mm} + \pause + \item DH-ratchet key: {\color{blue}$(A_i,B_j)$} + \begin{itemize} + \item generated unrelatedly from previous key + \end{itemize} + \item chain key: {\color{PineGreen}$CK_{(A_i,B_j)}$} + \begin{itemize} + \item derived from DH-ratchet key + \item used for forward-secrecy updating + \end{itemize} + \item message key: {\color{red}$MK_{(A_i,B_j)}$} + \begin{itemize} + \item derived from chain key + \item newly generated per message + \end{itemize} + \pause + \item header key, next header key + \begin{itemize} + \item used to encrypt DH-ratchet key sent to receiver + \end{itemize} + \end{itemize} + + +\end{frame} + + + +\begin{frame} + \frametitle{DH Ratchet: flow} + +%\small +\footnotesize +$$ +\xymatrix @!0 @C=0.5in @R=0.26in{ + &{}\save[]+<0cm,0.5cm>*\txt{ + Alice\\ + {\color{blue}$(A_0,B_0)$} + } + \only<2->{\ar[d]} + \restore + &&& + &{}\save[]+<0cm,0.5cm>*\txt{ + Bob\\ + {\color{blue}$(A_0,B_0)$} + } + \only<6->{\ar[d]} + \restore +\\ + &\uncover<2->{\color{blue}(A_1,B_0)} + \only<3->{\ar[dl]} + \only<13->{\ar[ddd]} + &&& + &\uncover<6->{\color{blue}(A_1,B_0)} + \only<7->{\ar[dr]} + \only<9->{\ar[ddd]} +\\ +\uncover<3->{\color{PineGreen}CK_{(A_1,B_0)}} +\only<4->{\ar[d]} + &&&&& + &\uncover<7->{\color{PineGreen}CK_{(A_1,B_0)}} + \only<8->{\ar[d]} +\\ +\uncover<4->{{\color{red}MK_{(A_1,B_0)}}_{,0}} +\only<5-7>{\ar@{-->}[rrrrrr]} +\only<8->{\ar@{->}[rrrrrr]} + &&&&& + &\uncover<8->{{\color{red}MK_{(A_1,B_0)}}_{,0}} +\\ + &\uncover<13->{\color{blue}(A_1,B_1)} + \only<14->{\ar[dr]} + \only<16->{\ar[ddd]} + &&& + &\uncover<9->{\color{blue}(A_1,B_1)} + \only<10->{\ar[dl]} + \only<20->{\ar[ddd]} +\\ + & + &\uncover<14->{\color{PineGreen}CK_{(A_1,B_1)}} + \only<15->{\ar[d]} + & + &\uncover<10->{\color{PineGreen}CK_{(A_1,B_1)}} + \only<11->{\ar[d]} +\\ + & + &\uncover<15->{{\color{red}MK_{(A_1,B_1)}}_{,0}} + & + &\uncover<11->{{\color{red}MK_{(A_1,B_1)}}_{,0}} + \only<12-14>{\ar@{-->}[ll]} + \only<15->{\ar@{->}[ll]} +\\ + &\uncover<16->{\color{blue}(A_2,B_1)} + \only<17->{\ar[dl]} + &&& + &\uncover<20->{\color{blue}(A_2,B_1)} + \only<21->{\ar[dr]} +\\ +\uncover<17->{\color{PineGreen}CK_{(A_2,B_1)}} +\only<18->{\ar[d]} + &&&&& + &\uncover<21->{\color{PineGreen}CK_{(A_2,B_1)}} + \only<22->{\ar[d]} +\\ +\uncover<18->{{\color{red}MK_{(A_2,B_1)}}_{,0}} +\only<19-21>{\ar@{-->}[rrrrrr]} +\only<22->{\ar@{->}[rrrrrr]} +\only<23->{\ar[d]} + &&&&& + &\uncover<22->{{\color{red}MK_{(A_2,B_1)}}_{,0}} + \only<25->{\ar[d]} +\\ +\uncover<23->{{\color{red}MK_{(A_2,B_1)}}_{,1}} +\only<24>{\ar@{-->}[rrrrrr]} +\only<25->{\ar@{->}[rrrrrr]} + &&&&& + &\uncover<25->{{\color{red}MK_{(A_2,B_1)}}_{,1}} +} +$$ + + +\end{frame} + From 4b04e4a05a40c011c92d0b4687b12ec68d21934d Mon Sep 17 00:00:00 2001 From: BeJade Date: Wed, 27 May 2015 18:43:19 +0200 Subject: [PATCH 5/8] Create network.tex --- network.tex | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 network.tex diff --git a/network.tex b/network.tex new file mode 100644 index 0000000..8fa4427 --- /dev/null +++ b/network.tex @@ -0,0 +1,62 @@ +\begin{frame} + \frametitle{Network Diagram\only<12>{: receive}\only<13>{: send}} + +$$ +\xymatrix @!0 @C=0.7in @R=0.4in{ +{}\save[]+<-1cm,0cm>*+[F]\txt<4pc>{\uncover<1->{Use Tor at all time}} \restore + & + &{}\save[]+<-0cm,0.2cm>*\txt<5.8pc>{ + \uncover<6-7,10-11>{{\small{PANDA}} Server over Tor}} + \only<6-7>{\ar@{-}@/_1.5pc/[ddll] \ar@{-}@/^1.5pc/[ddrr]} + \only<10-11>{\ar@{-}@/_1.6pc/[ddll] \ar@{-}[dd]} + \restore +\\ + &{}\save[]+<0cm,0.4cm>*\txt{ + \uncover<3->{\small{${\color{blue}G_{1\phantom{,}pub}}$}} \uncover<9->{\small{$,{\color{blue}G_{2\phantom{,}pub}}$}} \\ + \uncover<1->{Server1}} \restore + \only<2-12>{\ar@{-}[dl]} \only<9-12>{\ar@{-}[dr]} \only<13->{\ar@{--}[dl]} \only<13->{\ar@{--}[dr]} \only<13->{\ar@{--}[drrr]} + & + & + &{}\save[]+<0cm,0.4cm>*\txt{ + \uncover<5->{\small{${\color{blue}G_{3\phantom{,}pub}}$}} \\ + \uncover<4->{Server2}} + \restore + \only<4-12>{\ar@{-}[d]} \only<13->{\ar@{--}[dllll]} +\\ +{}\save[]+<0cm,-0.9cm>*\txt{ +\uncover<1->{User1} \\ +\uncover<3->{\small{${\color{red}G_{1\phantom{,}sk[1]}}$}} \uncover<7->{\small{$,{\color{red}G_{3\phantom{,}sk[1]}}$}} \uncover<11->{\small{$,{\color{red}G_{2\phantom{,}sk[1]}}$}}\\ +\uncover<3->{\small{${\color{PineGreen}S_{1\phantom{,}pub}}$}} \uncover<7->{\small{$,{\color{PineGreen}S_{2\phantom{,}pub}}$}} \\ +\uncover<7->{\small{${\color{magenta}U_{3\phantom{,}serv}}$}} \uncover<11->{\small{$,{\color{magenta}U_{2\phantom{,}serv}}$}} +} \restore + & + &{}\save[]+<0cm,-0.9cm>*\txt{ + \uncover<8->{User2} \\ + \uncover<9->{\small{${\color{red}G_{2\phantom{,}sk[2]}}$}} \uncover<11->{\small{$,{\color{red}G_{1\phantom{,}sk[2]}}$}} \\ + \uncover<9->{\small{${\color{PineGreen}S_{1\phantom{,}pub}}$}} \\ + \uncover<11->{\small{${\color{magenta}U_{1\phantom{,}serv}}$}} + } \restore + & + &{}\save[]+<0cm,-0.9cm>*\txt{ + \uncover<4->{User3} \\ + \uncover<5->{\small{${\color{red}G_{3\phantom{,}sk[3]}}$}} \uncover<7->{\small{$,{\color{red}G_{1\phantom{,}sk[3]}}$}} \\ + \uncover<5->{\small{${\color{PineGreen}S_{2\phantom{,}pub}}$}} \uncover<7->{\small{$,{\color{PineGreen}S_{1\phantom{,}pub}}$}} \\ + \uncover<7->{\small{${\color{magenta}U_{1\phantom{,}serv}}$}} + } \restore +\\ +} +$$ + +\vspace{0.5cm} + +\footnotesize{ +\begin{align*} +{\color{blue}G_{i\phantom{,}pub}} &: \text{Group } i \text{ public key}\\ +{\color{red}G_{i\phantom{,}sk[j]}} &: \text{Group } i \text{ secret key of member } j\\ +{\color{PineGreen}S_{i\phantom{,}pub}} &: \text{Server } i \text{ public key}\\ +{\color{magenta}U_{i\phantom{,}serv}} &: \text{User } i \text{ home server}\\ +\end{align*} +} + + +\end{frame} From 95cdf1d12843e420b266602c155fcca0a26d9867 Mon Sep 17 00:00:00 2001 From: BeJade Date: Wed, 27 May 2015 18:43:40 +0200 Subject: [PATCH 6/8] Create bbs.tex --- bbs.tex | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 bbs.tex diff --git a/bbs.tex b/bbs.tex new file mode 100644 index 0000000..6d07d2e --- /dev/null +++ b/bbs.tex @@ -0,0 +1,46 @@ +\begin{frame} + \frametitle{BBS Group Signature} + + \begin{itemize} + \setlength\itemsep{1em} + \item Messages signed by a member in a group + \begin{itemize} + \item Group$_i$: people authorized to send to $i$ + \end{itemize} + \item Server cannot learn which member of the group signed + \item Revocation: + \begin{itemize} + \item all previous signatures become invalid + \item each member has to update their private keys + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{BBS Group Signature: computational cost} + + \begin{itemize} + \setlength\itemsep{1em} + \item Precomputation: + \begin{itemize} + \item 3 pairings (cached by both signers and verifiers) + \item 1 pairing\phantom{s} (cached by signers) + \end{itemize} + \item Sign: + \begin{itemize} + \item 8 (multi-) exponentiations ($7$ in $G_1$, $1$ in $G_T$) + \item 0 pairing + \end{itemize} + \item Verify: + \begin{itemize} + \item 6 multi-exponentiations ($4$ in $G_1$, $1$ in $G_2$, $1$ in $G_T$) + \item 1 pairing + \end{itemize} + \end{itemize} + + Note: pairing $e: G_1 \times G_2 \rightarrow G_T$\\ + \vspace{1em} + \pause + Comment: This is not (yet) how Pond is implemented. + +\end{frame} From 14c7348a39494053a97e09b0ee92db625d193547 Mon Sep 17 00:00:00 2001 From: BeJade Date: Wed, 27 May 2015 18:44:00 +0200 Subject: [PATCH 7/8] Create future.tex --- future.tex | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 future.tex diff --git a/future.tex b/future.tex new file mode 100644 index 0000000..84883b3 --- /dev/null +++ b/future.tex @@ -0,0 +1,25 @@ +\begin{frame} + \frametitle{Future Research} + + \begin{itemize} + \item Open problems: + \begin{itemize} + \setlength\itemsep{0.3em} + \item Formalize security assumptions + \item Prove protocol secure (or modify to make proof work) + \end{itemize} + + \vspace{0.5cm} + \item Desired feature: + \begin{itemize} + \setlength\itemsep{0.3em} + \item Friends introduction\\ + A knows B and C; how can A introduces B to C? + \item Scalability of group signature + \item Decentralize PANDA + \item Multiple recipients + \item Group recipient + \item Post-quantum crypto + \end{itemize} + \end{itemize} +\end{frame} From a63610ceed04c5a1074e7d4e3411a573ab52bd2f Mon Sep 17 00:00:00 2001 From: BeJade Date: Wed, 27 May 2015 18:44:32 +0200 Subject: [PATCH 8/8] Create Makefile --- Makefile | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8906843 --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +TARGET = pond +PSPICFILES = + +INPUT_SOURCES = $(shell cat $(TARGET).tex | grep -v ^[\t\ ]*% | grep input\{ | cut -d{ -f2 | cut -d} -f1) +INCLUDE_SOURCES = $(shell cat $(TARGET).tex | grep -v ^[\t\ ]*% | grep include\{ | cut -d{ -f2 | cut -d} -f1) + +SOURCES = \ + $(TARGET).tex \ + $(INPUT_SOURCES:%=%.tex) \ + $(INCLUDE_SOURCES:%=%.tex) + +$(TARGET).pdf: $(TARGET).tex $(SOURCES) + pdflatex $(TARGET).tex + +pspics: $(PSPICFILES) + -latex $(TARGET).tex + -dvips -o $(TARGET)-pics.ps $(TARGET).dvi + -ps2pdf $(TARGET)-pics.ps + +clean: + rm -f $(TARGET).ps $(TARGET).dvi + rm -f $(TARGET).ind $(TARGET).toc $(TARGET).bbl $(TARGET).blg $(TARGET).ilg $(TARGET).idx $(TARGET).log $(TARGET).out $(TARGET).snm $(TARGET).nav + rm -f $(SOURCES:%.tex=%.aux) + rm -f $(TARGET)-pics* + rm -f $(TARGET).pdf