Difference between revisions of "Np1sec/algebraic"
(→Accept) |
|||
| Line 82: | Line 82: | ||
!align="center"|Pseudo-code | !align="center"|Pseudo-code | ||
|- | |- | ||
| − | |align="right"| broadcast all user's identities | + | |align="right"| broadcast all user's identities |
| − | |align="center"|<math> | + | |align="center"|<math> (U_1|y_1|\dots|U_n|y_n) </math> |
|- | |- | ||
|align="right"| Receive other users' id/key and update participant list | |align="right"| Receive other users' id/key and update participant list | ||
| − | |align="center"|<math>plist_i|klist_i | + | |align="center"|<math>(plist_i|klist_i) \cup (U_j|y_j)</math> |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
|- | |- | ||
|align="right"|Compute Session Id | |align="right"|Compute Session Id | ||
| Line 98: | Line 92: | ||
|- | |- | ||
|align="right"|Generate Triple Diffie-Hellman P2P key for the new participant | |align="right"|Generate Triple Diffie-Hellman P2P key for the new participant | ||
| − | |align="center"|<math>k_{i,j} \leftarrow H({y_j}^{lp_i},LP_j^{x_i},y_j^{x_i})</math> | + | |align="center"|<math>k_{i,j} \leftarrow H({y_j}^{lp_i},LP_j^{x_i},y_j^{x_i})</math> |
|- | |- | ||
|align="right"|Generate key confirmations | |align="right"|Generate key confirmations | ||
| − | |align="center"|<math> | + | |align="center"|<math>kc_{i,j}\leftarrow H(k_{i,j}, U_i) </math> |
|- | |- | ||
|align="right"|Generate secret shares | |align="right"|Generate secret shares | ||
| Line 116: | Line 110: | ||
|- | |- | ||
|align="right"| Receive other users' key shares and new users confirmation | |align="right"| Receive other users' key shares and new users confirmation | ||
| − | |align="center"|<math>(U_1|z_1,\sigma_1,\dots U_n|z_n,\sigma_n), kc_{ | + | |align="center"|<math>(U_1|z_1,\sigma_1,\dots U_n|z_n,\sigma_n), kc_{i,j}</math> |
|- | |- | ||
|align="right"|Check validity of key confirmation | |align="right"|Check validity of key confirmation | ||
| − | |align="center"|<math> | + | |align="center"|<math>kc_{j,i} == H(k_{i,j},U_j)</math> |
|- | |- | ||
|align="right"|Check public shares | |align="right"|Check public shares | ||
Revision as of 06:29, 11 September 2014
Chatroom Setup
| Description | Pseudo-code |
|---|---|
| Generate ephemeral DH private key of the room initiator |
|
| Generate DH key for BD, Triple DH and Signature |
|
| Set participant list |
|
Join
| Description | Pseudo-code |
|---|---|
| Generate ephemeral DH private key |
|
| Generate DH key for BD, Triple DH and Signature |
|
| Broadcast User identity and the DH key |
|
| Receive other users' id/key |
|
| Compute Session Id |
|
| Generate Triple Diffie-Hellman P2P keys | }}
|
| Generate key confirmations | }}
|
| Generate secret shares |
|
| Generate public shares |
|
| Sign identity, shares |
|
| Broadcast key shares and confirmation |
|
| Receive other users' key shares and confirmation |
|
| Check validity of key confirmation |
|
| Check public shares |
|
| Check signatures |
|
| Recover secret shares |
|
| Generate session key |
|
| Broadcast session key confirmation |
|
Accept
| Description | Pseudo-code |
|---|---|
| broadcast all user's identities |
|
| Receive other users' id/key and update participant list |
|
| Compute Session Id |
|
| Generate Triple Diffie-Hellman P2P key for the new participant |
|
| Generate key confirmations |
|
| Generate secret shares |
|
| Generate public shares |
|
| Sign identity, shares |
|
| Broadcast key shares and confirmation |
|
| Receive other users' key shares and new users confirmation |
|
| Check validity of key confirmation |
|
| Check public shares |
|
| Check signatures |
|
| Recover secret shares |
|
| Generate session key |
|
| Broadcast session key confirmation |
|
Leave
| Description | Pseudo-code |
|---|---|
| Remove leaving user's id/key and update participant list |
|
| Compute Session Id |
|
| Generate key confirmations |
|
| Generate secret shares |
|
| Generate public shares |
|
| Sign identity, shares |
|
| Broadcast key shares | }}
|
| Receive other users' key shares | Failed to parse (lexing error): (U_1|z_1,\sigma_1,\dots U_n|z_n,\sigma_n) |- |align="right"|Check validity of key confirmation |align="center"|<math>kc_i[j] == kc_j[i] |
| Check public shares |
|
| Check signatures |
|
| Recover secret shares |
|
| Generate session key |
|
| Broadcast session key confirmation |
|
Send
| Description | Pseudo-code |
|---|---|
| Generate new DH Key or new key share if needed and append |
|
| Append the hash of the session digest up to parent of current message |
|
| Sign the message |
|
| Encrypt | Failed to parse (PNG conversion failed; check for correct installation of latex and dvipng (or dvips + gs + convert)): e\leftarrow Enc_{k}_{{sid}}(m) |
| Broadcast the message |
|
Receive
| Description | Pseudo-code |
|---|---|
| check signature |
|
| decrypt messagen |
|
| Verify session id and hash | Failed to parse (syntax error): \sigma \leftarrow sid_i == sid_{rec} & h == Digest(parent\_id) |
| Update key share or session key |
|
| return m |
|
}}
}}
}}