Difference between revisions of "Np1sec/incremental consistency"

(Consistency: give a summary of the overall consistency strategy)
Dmitri (Talk | contribs)
m (Dmitri moved page MpOTR/incremental consistency to Np1sec/incremental consistency: protocol renamed)
 
(3 intermediate revisions by one other user not shown)
Line 25: Line 25:
  
 
Once ''m'' is fully-acked, ''u'' knows that everyone else has seen ''m'' and all messages before it. We'll call the process of gaining that knowledge, "reaching consistency for ''m''" (given context, ''m'' might be implicit). We don't have another mechanism for it, so henceforth we'll use "reach consistency" interchangeably with "reach full-ack", though strictly the former is a security property and the latter is a mechanism for achieving it.
 
Once ''m'' is fully-acked, ''u'' knows that everyone else has seen ''m'' and all messages before it. We'll call the process of gaining that knowledge, "reaching consistency for ''m''" (given context, ''m'' might be implicit). We don't have another mechanism for it, so henceforth we'll use "reach consistency" interchangeably with "reach full-ack", though strictly the former is a security property and the latter is a mechanism for achieving it.
 +
 +
An '''explicit-ack''' is a message with no user content, that is sent solely for the purpose of declaring (via recv-parent) what the sender has seen. We'll make use of these to ensure consistency is reached in a timely manner, even if no-one wants to send a normal message (that contains user-level contents, and which is an '''implicit-ack''').
  
 
== Consistency ==
 
== Consistency ==
Line 37: Line 39:
 
Case '''(b)''': when a member ''u'' wants to part, they send a "farewell" message ''m'':
 
Case '''(b)''': when a member ''u'' wants to part, they send a "farewell" message ''m'':
  
* Everyone should explicit-ack this message ASAP
+
* Everyone should explicit-ack ''m'' as soon as they receive it from the server.
** This message should contain the next-sender-key, to be used after u leaves, encrypted to everyone except u. This ensures old members can't read new messages even if they eavesdrop.
+
** This ack may also bundle any cryptographic material needed for other members to agree on a key or keys that exclude ''u''. For example, in the SenderKeys scenario, this would contain the next sender-key, encrypted to everyone except ''u''.
** (We could probably do something similar for group keys.)
+
* When ''m'' is fully-acked, ''u'' reaches consistency for all previous messages up to ''m'', and may leave.
* When this message is fully-acked, u gains consistency for all previous messages up to m, and may leave.
+
* Messages that others send to ''u'' that are echoed back after ''m'', will not be acked by ''u''.
** Other messages should be probably be discarded - u won't have a chance to verify their consistency.
+
** ''u'' won't have a chance to reach consistency for these messages, even if ''u'' receives them.
 +
** Others won't have a chance to check that ''u'' read them, though they may be able to check that everyone else did. But ''u'' may still read them in theory, since they were encrypted to ''u''.
 +
** In either case, communicating this meaning to the user, should be already covered by the same UI as for case (a). In the first case, ''u'' may shortcut the timeout and just issue the warning straight away, or alternatively not display those messages to the user at all.
 
* TBD: need to think about simultaneous parts
 
* TBD: need to think about simultaneous parts
 
Messages that others send to ''u'' that are echoed back after "farewell" will not be acked by ''u'', therefore should not be shown as "seen/acked by u". However, ''u'' may still read them in theory, since they were encrypted to ''u''. Communicating this meaning should be already covered by the same thing as for case (a), though.
 
  
 
=== Parameters and properties ===
 
=== Parameters and properties ===

Latest revision as of 18:47, 2 December 2014

Background

Definitions

Consistency

Relative ordering

Last modified 11 years ago
Cancel

Help improve this page!

Cancel

Keep track of this page and all changes to it.