Changes

Np1sec

1,137 bytes added, 8 years ago
explaniation of the state transitors of the FSM added
|-
|align="right"| Broadcast session confirmation
|align="center"|{{Font color|black|yellow|<math>(sc_{i} \leftarrow H(sk_i,U_i), sigma_i \leftarrow Sign_{x_i}(sc_{i}))</math>}}
|align="center"|Broadcast
|-
|align="right"|Check the validity of session confirmation
|align="center"|{{Font color|black|yellow|<math>H(sk_{i},U_j) \stackrel{?}{=} sc_j \; \forall j \neq i</math>}}
|align="center"|Receive
|-
|align="right"|Check signatures
|align="center"|{{Font color|black|yellow|<math>Verify_{y_j}(\sigma_j) \; \forall j \neq i</math>}}
|align="center"|Computation
|-
If the message has a session id of a session that the user is part of, then message handling is governed by the finite state machine table described below. Otherwise, the messages should be handled as follows:
=====Joiner=====
The Joiner will ignores all messages without session id.
* ''Session Confirmation'': re-try to join.
=====Confirmed Participant======
If the received message does not have a session id, then it is a JOIN_REQUEST and can be handled by the current session's finite state machine.
=====Finite State Table=====
 
The sesseion finte state machine react based on the following table. A joiner will start a new session with JOIN_REQUESTED after it sends its join request.
 
{| class="wikitable"
|-
! State/Message !! JOIN_REQUEST !! PARTICIPANTS_INFO !! !! JOINER_AUTH !! GROUP_SHARE !! SESSION_CONFIRMATION !! IN_SESSION_MESSAGE !!
|-
| JOIN_REQUESTED || || auth_and_reshare authenticate and send share || || || confirm_or_resession || ||
|-
| RE_SHARED || || confirm_auth_add_update_share_repo authenticate and store share || confirm_auth_add_update_share_repo authenticate and store share || authenticate and store share || || ||
|-
| GROUP_KEY_GENERATED || || || || || confirm_auth_add_update_share_repo mark confirmed and may move session || ||
|-
| IN_SESSION || init_a_session_with_new_user init a session with new user || || || || mark_confirmed_and_may_move_session || receive ||
|-
| DEAD || || || || || mark_confirmed_and_may_move_session || receive ||
|}
 
If a message is received when there is no handler it will be ignored.
 
* '''authenticate and send share''' called by the joiner, computes authentication token with each of the participants and the user share of the session key and send a JOINER_AUTH Message. Beside generating share it acts like '''authenticate and store share'''.
 
* '''authenticate and store share'''
validate the authentication token and store the sent share. If everybody is authenticated and all shares are received, compute the session key and the session confirmation and send of SESSION_CONFIRMATION message. In that case, the session state will be changed to GROUP_KEY GENERATED. Otherwise stays unchanged.
 
* '''confirm and may move session'''
it validate the session confirmation. If all the participant is confirmed the state will change to IN_SESSION. joiner become confirmed participant.
 
* '''init a session with new user'''
When a confirmed participant receive this message start a new session with the joiner added to it. The state of new session will be RE_SHARED.
 
=======Explaniantion of the handlers======
authenticate and reshare
=====Session transmission=====