[OTR-dev] mpOTR protocol phases and research questions
George Kadianakis
desnacked at riseup.net
Wed Oct 23 11:26:59 EDT 2013
Here are some more notes about mpOTR that I refreshed today.
Here are some properties that the mpOTR protocol should have. These
were also mentioned in the mpOTR paper:
- Confidentiality
- Entity Autentication
- Origin Authentication
- Forward Secrecy
- Deniability (Repudiation/Malleability)
Do we want this? It would certainly be nice to have, but it makes
things so much harder!
- Transcript synchronisation
- ...
Here is a breakdown of an mpOTR session in phases:
[Channel establishment] -> [Authentication] -> [Key exchange] ->
[Communication phase] -> [Shutdown phase]
At the moment, the [Authentication] and [Key exchange] phases are the
ones that need the most attention from researchers. More details
below.
Phase breakdown:
[Channel establishment]
* Where a set of initial unauthenticated participants is selected and
a channel between the participants is established.
Notes:
- I assume that the protocol is centralized since it makes
everything much easier (I assume that broadcast happens by
sending a broadcast msg to a server). We can decentralize
later.
Solutions:
- Assuming an application-agnostic protocol, this can happen using IRC
channels, or XMPP MUCs, or SIP or whatever.
[Authentication]
* Where participants authenticate each other and a set of
authenticated participants is established.
Notes:
- At the end of this phase, each participant should be confident
that he trusts all the other authenticated participants.
- If deniability is in our goals, this handshake should happen in
a deniable fashion.
- A session ID etc. must be established somewhere around here too.
Solutions: Possible solutions include:
- "Improved Deniable Signature Key Exchange for mpOTR" by Matthew Van Gundy.
Uses the scheme presented in "Deniable Group Key Agreement" by Bohli
et al as a basis.
The Bohli paper is not terribly well-cited.
Also see
http://lists.cypherpunks.ca/pipermail/otr-dev/2013-August/001815.html
- Just-Vaudenay "Authenticated multi-party key agreement". Well-cited,
but there are published attacks (key-compromise impersonation etc.)
against the original protocol. The idea is kind of similar to the
2-party key exchange proposed by Trevor Perrin in:
https://whispersystems.org/blog/simplifying-otr-deniability/
- The protocols mentioned by Matthew Van Gundy in:
http://lists.cypherpunks.ca/pipermail/otr-dev/2013-March/001676.html
- There are dozens more protocols that we haven't looked at. Which
ones are worth reading? GDH.2 and GDH.3 by Steiner et al.?
[Key exchange]
* Where participants negotiate a shared key to be used for this
conversation.
Notes:
- This phase will probably get merged with the "Authentication
handshake" phase using a "Authenticated Group Key-Exchange
protocol".
- Ideally this handshake should be friendly towards dynamic
groups, so that the computational damage of joins/parts is
minimized (with a naive scheme, this handshake will need to
be repeated everytime someone joins or leaves the channel).
- This handshake should be cheap and ideally broadcast-based.
Handshakes that work pairwise between participants are expensive and
hard to scale.
Solutions:
- See the previous section for "Authenticated Group Key-Exchange"
solutions.
- Also see "Secure group communicaton using key graphs" and "Scalable
Authenticated Tree Based Group Key. Exchange for Ad-Hoc Groups" for
dynamic group key-exchange solutions.
[Communication phase]
* Where participants, using the derived keys, communicate with each
other in an authenticated/confidential fashion.
Notes:
- A message format must be defined. Each message will need to be
encrypted, authenticated, maybe even marked with a sequence number,
etc. Also see the mpOTR paper for more stuff that we need to be
aware of.
- Furthermore, we need to ensure transcript correctness, that is,
in real-time fashion each participant should be assured that
she is seeing the same transcript as all the other
participants. This is to avoid attacks like:
"""
[PoV of Alice]
Bob: Do you like reggae music?
Alice: Yes!
Bob: Do you like metal music?
Alice: No!
[PoV of Bob]
Bob: Do you like reggae music?
Alice: No!
Bob: Do you like metal music?
Alice: Yes!
"""
To avoid this we will need to use some kind of causal delivery
protocol. For example, "OldBlue: Causal Broadcast In A Mutually
Suspicious Environment" by Matthew Van Gundy et al.?
[Shutdown phase]
* A shutdown phase might be needed in a deniable protocol so that
parties expose their ephemeral keys etc.
* A shutdown phase is needed in any case to memwipe all cryptographic
material from memory.
Notes: The mpOTR paper includes a Shutdown() algorithm.
More information about the OTR-dev
mailing list