Changes

Np1sec/concurrent join

265 bytes added, 9 years ago
Simplifies the protocol without involving confirmation
With having session key confirmation one can have following protocol to handle concurrent join.
Each session each occupant can have mark each session with one of the 5 status: {current, potentially nextin-limbo, next, admissible, inadmissibledead}'''current''': User messages are being encrypted and decrypted in the current session. The join request will be process by this session.'''in-limbo''': A session which is receiving shares and confirmation, this session can potentially become the next session if it receive session confirmation from all users.'''dead''': The session is abonden and not going to become current session.
==Session picking The protocol for join one user at the time but is greedy and non-blocking in respect to several concurrent joiner and eventually results in join of all new users as long as current occupant of users in the current session==Suppose user <math>U_i</math> cooperate with join process. The global order of messages is essential in Session <math>S</math>. When new user <math>Unew_j</math> send for the protocol to succeed which is a join request, user transport assumption for <math>U_in+1sec</math> start an admissible session <math>S_j</math> with the list of authenticated participant in the room (not users in the session)protocol.
If ==Session picking protocol for new user joining the room==New user start a join process by sending <math>m(U_{joiner}, y_{joiner})</math> users are joining that session concurrently, there are <math>S_1,...In respose,S_m</math> admissible which are receiving shares and authentication it receives messages.of the format
Suppose <math>S_j</math> receives the mutual authentication of all new users in admissible session <math>S_j</math> that will become the potentially next session of <math>U_i</math>. <math>U_i</math> then sends the combined list of (authenticated) participants in <math>S_j</math>sid, <math>(U_1,y_1,...,Unew_mU_{joiner},ynew_my_{joiner},...)</math> to the room intending for new users not in the list to see and to authenticate to, and to old user to signal its potentially next session. It tags <math>S_1,...kc_{i},S_mz_{i}</math> as inadmissible sessions.
When From each user <math>U_ii</math> receives all shares of potentially next . The joiner makes a session for each <math>S_jsid</math> and the authenticated list from all users from current sessionwhich contain them as a participant, they tag the user initiate a session as next and send gather shares. When a session receives all shares it compute the session key confirmation of <math>S_j</math>becomes the current session. The All other session will not be tagged as inadmissible can remains in case limbo or get discarded based on the memory capacity of new authenticated list, it just make new admissible sessionthe implementation and security requirement.
If ==Session picking protocol for current occupant of the current session==Suppose user <math>U_i receives another authenticated list from another </math>S_j'is in Session <math>S</math> then it tag . When new user <math>S_jU_j</math> send a join request, user <math>U_i</math> inadmissible as well and start an admissible a session with in limbo <math>plist_{S_j'} \cup plist_{S_j}</math> as new admissible session waiting for authentication from new with the list of usersin the current session plus the joining user.As a part of initiation of each session <math>S_j</math> the current user send a message of type:
If it receives key confirmation from all <math>U_l</math> in <math>sid, (U_1,y_1,...,Unew_mU_{joiner},y_{joiner},...), kc_{i}, z_{i}</math> then it will make <math>S_j</math> as current session and send messages to this session.
==Session picking protocol for new user joining the room==
When a joining user Unew_l receives a list of potential users which is not including them, it authenticate to U_i's which new user has not yet authenticated to, and compute new share for the new share list. When they have all shares and authentication for plist_j then they send the key confirmation and wait for all of key confirmation.
When they receive confirmation from every user If <math>m</math> users are joining that session concurrently, there are <math>S_1,...,S_m</math> sessions in plist_j-limbo which are receiving shares and authentication messages. They make it current  If the <math>U_l</math> currently in room signal to leave the room a session and start chatting<math>S_l</math> is created. Each session <math>S_j</math> results in creation of session <math>S_{j'}</math> with user <math>U_l</math> omitted. <math>S_j</math> is marked as dead.
admissible -User <math> {inadmissibleU_i</math> send the shares and authentication token necessary for each session. The first session which receives all confirmation will become the main session, potentially next}potentially next -the joiner user of that session becomes the current session. All other <math>S_j</math> results in new session <math>S_{inadmissible, nextj''}next-</math>to which <math>U_{currentjoiner}</math> is added. previous "current" session becomes in-limbo.
in-limbo -> {in-limbo, dead, current and inadmissible will be eventually discarded.}current -> in-limbo