-
Notifications
You must be signed in to change notification settings - Fork 14
[Specification] Off the Record Messaging Protocol V3
This document describes version 3 of the Off-the-Record Messaging protocol. The main changes over version 2 include:
- Both fragmented and unfragmented messages contain sender and recipient instance tags. This avoids an issue on IM networks that always relay all messages to all sessions of a client who is logged in multiple times. In this situation, OTR clients can attempt to establish an OTR session indefinitely if there are interleaving messages from each of the sessions.
- An extra symmetric key is derived during AKE. This may be used for secure communication over a different channel (e.g., file transfer, voice chat).
Table of Content
-
Very high level overview
-
High level overview
-
Requesting an OTR conversation
-
Authenticated Key Exchange (AKE)
-
Exchanging data
-
Socialist Millionaires' Protocol (SMP)
-
Details of the protocol
-
Unencoded messages
-
OTR Query Messages
-
Tagged plaintext messages
-
OTR Error Messages
-
Encoded messages 1. Data types 2. Public keys, signatures, and fingerprints 3. Instance Tags 4. D-H Commit Message 5. D-H Key Message 6. Reveal Signature Message 7. Signature Message 8. Data Message
-
Socialist Millionaires' Protocol (SMP) 1. Secret information
-
The SMP state machine 1. Expected Message 2. State Transitions 3. SMP Hash function 4. Receiving a type 2 TLV (SMP message 1) 5. Receiving a type 3 TLV (SMP message 2) 6. Receiving a type 4 TLV (SMP message 3) 7. Receiving a type 5 TLV (SMP message 4) 8. User requests to abort SMP
-
Key Management 1. Computing AES keys, MAC keys, and the secure session id 2. Extra symmetric key 3. Revealing MAC keys
-
Fragmentation
-
The protocol state machine 1. Message state 2. Authentication state 3. Policies 4. State transitions 5. Receiving plaintext without the whitespace tag 6. Receiving plaintext with the whitespace tag 7. Receiving a Query Message 8. Receiving an Error Message 9. User requests to start an OTR conversation
-
Receiving a D-H Commit Message
-
Receiving a D-H Key Message
-
Receiving a Reveal Signature Message
-
Receiving a Signature Message
-
User types a message to be sent
-
Receiving a Data Message
-
User requests to end an OTR conversation
-
Very high level overview