Difference between revisions of "Np1sec/algebraic"
(→Accept) |
m (Dmitri moved page MpOTR/algebraic to Np1sec/algebraic) |
||
| (4 intermediate revisions by one other user not shown) | |||
| Line 182: | Line 182: | ||
|- | |- | ||
|align="right"| Append the hash of the session digest up to parent of current message | |align="right"| Append the hash of the session digest up to parent of current message | ||
| − | |align="center"|<math> m \leftarrow (m, Digest( | + | |align="center"|<math> m \leftarrow (m, Digest(parent(m)), parent\_id) </math> |
|- | |- | ||
|align="right"| Sign the message | |align="right"| Sign the message | ||
| Line 188: | Line 188: | ||
|- | |- | ||
|align="right"|Encrypt | |align="right"|Encrypt | ||
| − | |align="center"|<math>e \leftarrow | + | |align="center"|<math>e \leftarrow Enc_{k_{sid}}(m)</math> |
|- | |- | ||
|align="right"| Broadcast the message | |align="right"| Broadcast the message | ||
| Line 200: | Line 200: | ||
|- | |- | ||
|align="right"| check signature | |align="right"| check signature | ||
| − | |align="center"|<math> verify(m) == ( | + | |align="center"|<math> verify(m,\sigma) </math> |
| + | |- | ||
| + | |align="right"| update message block chain | ||
| + | |align="center"|<math> Insert(BlackChain_{sid}, m) </math> | ||
|- | |- | ||
|align="right"| decrypt messagen | |align="right"| decrypt messagen | ||
| Line 206: | Line 209: | ||
|- | |- | ||
|align="right"| Verify session id and hash | |align="right"| Verify session id and hash | ||
| − | |align="center"|<math> | + | |align="center"|<math> sid_i == sid_{rec} \; \textrm{and} \; h == Digest(parent\_id)</math> |
|- | |- | ||
| − | |align="right"| Update key | + | |align="right"| Update sender key or share key |
| − | |align="center"|<math> | + | |align="center"|<math>y_j \leftarrow s \; \textrm { or } \; z_{j} \leftarrow s</math> |
| + | |- | ||
| + | |align="right"| if all users' share are received session key | ||
| + | |align="center"|<math>k_i \leftarrow ComputeSessionKey(z_1,...,z_n) </math> | ||
|- | |- | ||
|align="right"| return m | |align="right"| return m | ||
|align="center"|<math>m</math> | |align="center"|<math>m</math> | ||
|} | |} | ||
| + | |||
| + | [[Category: mpOTR]] | ||
Latest revision as of 18:46, 2 December 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 secret shares |
|
| Generate public shares |
|
| Sign identity, shares |
|
| Broadcast key shares |
|
| Receive other users' key shares |
|
| 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 |
|
| Broadcast the message |
|
Receive
| Description | Pseudo-code |
|---|---|
| check signature |
|
| update message block chain |
|
| decrypt messagen |
|
| Verify session id and hash |
|
| Update sender key or share key |
|
| if all users' share are received session key |
|
| return m |
|
}}
}}